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

Jika Mongo $lookup adalah gabungan luar kiri, lalu mengapa ia mengecualikan dokumen yang tidak cocok?

Perilaku ini tidak terkait dengan $lookup , itu karena perilaku default untuk $unwind adalah untuk menghilangkan dokumen di mana bidang yang direferensikan tidak ada atau array kosong.

Untuk melestarikan dokumen yang dibatalkan bahkan ketika profile.universities adalah array kosong, Anda dapat mengatur preserveNullAndEmptyArrays pilihan untuk true :

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: {
            path: "$profile.universities",
            preserveNullAndEmptyArrays: true
        }
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat terhubung ke MongoDB di Azure

  2. Memperbarui array dengan push dan slice

  3. Pos Layanan REST Node Mongo

  4. Otentikasi strategi lokal paspor tampaknya hanya berfungsi di localhost dengan instance MongoDB yang dibagikan

  5. Ikhtisar Mesin Penyimpanan WiredTiger untuk MongoDB