MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara $lookup dengan menghindari nilai nol dalam agregat mongodb

Anda dapat menyiasatinya dengan tidak menggunakan $in .

Tampilannya seperti ini $map dieksekusi secara terpisah untuk setiap dokumen dalam items koleksi. Jika Anda menjalankan peta dalam $addFields tahap, Anda dapat menggunakan bentuk pencarian sederhana untuk mencocokkan bidang yang ditambahkan ke _id , yang secara otomatis akan menangani yang hilang, null , dan larik.

Hapus bidang yang ditambahkan dengan $project panggung jika perlu.

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. kueri bersarang di pymongo menggunakan collection.find()

  2. Bagaimana saya bisa menghapus catatan lama dari koleksi di MongoDB?

  3. Apa perbedaan antara Spring Data MongoDB dan Hibernate OGM untuk MongoDB?

  4. Memasang di Mongo DB dan masalah Id

  5. Desain dokumen MongoDB untuk komentar (dan komentar balasan mereka)