sql >> Database >  >> NoSQL >> MongoDB

Hoe $ opzoeken door null-waarden in mongodb-aggregaat te vermijden

Je kunt dat omzeilen door $in . niet te gebruiken .

Het ziet er zo uit $map wordt afzonderlijk uitgevoerd voor elk document in de items verzameling. Als u de kaart zou uitvoeren in een $addFields stadium, kunt u de eenvoudige vorm van opzoeken gebruiken om het toegevoegde veld te matchen met _id , die automatisch ontbrekende zou afhandelen, null , en array.

Verwijder het toegevoegde veld met een $project podium indien nodig.

db.case.aggregate([
    {$lookup: {
        from: "insurance",
        let: { ipids: "$sale.bill.insurancePlanId" },
        pipeline: [
            {$unwind: "$coveragePlans"},
            {$match: { $expr: { $in: ["$coveragePlans._id", "$$ipids"] } }},
            {$project: { _id: 0, name: 1 }}
        ],
        as: "insurances"
    }}
    {$addFields:{
        matchArray:{$map: {
                       input: "$$iid",
                       in: { $toObjectId: "$$this" }
        }}
    }},
    {$lookup: {
        from: "item",
        localField: "matchArray",
        foreignField:"_id",
        as: "items"
    }},
    {$project:{
        arrayField: 0 
    }}
])


  1. Update/vernieuwt Mongoose upsert-bewerking de standaardschemawaarden?

  2. Pecl gebruiken om het Mongodb-stuurprogramma te installeren op OS X El Capitan (v10.11.1)

  3. is er een manier om de cliënt IP in redis te krijgen?

  4. Meteor en DBrefs