MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да $търся чрез избягване на нулеви стойности в агрегата на mongodb

Можете да го заобиколите, като не използвате $in .

Изглежда така $map се изпълнява отделно за всеки документ в items колекция. Ако трябваше да стартирате картата в $addFields можете да използвате простата форма на търсене, за да съпоставите добавеното поле с _id , което автоматично би обработвало липсващи, null и масив.

Премахнете добавеното поле с $project етап, ако е необходимо.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Свържете се с mongodb, работещ в Docker

  2. Изграждане на индекс на MongoDB – предотвратяване на потребителите да задействат нови компилации

  3. Съхраняване на заявка в Mongo

  4. как да инсталирате mongodb php драйвер на windows 8 и wamp сървър?

  5. Въведение в типовете данни на MongoDB