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

Cara $setDifference dalam array &Objek menggunakan Mongo DB

Anda perlu memperbaiki agregasi kedua itu dan mendapatkan semua UPIDs sebagai larik. Untuk mencapainya, Anda dapat menggunakan $cond dan berdasarkan $type kembalikan array atau gunakan $objectToArray untuk menjalankan konversi, coba:

db.Groups.aggregate([
    {
        $project: {
            students: {
                $cond: [ 
                    { $eq: [ { $type: "$members.regularStudent" }, "array" ] },
                    "$members.regularStudent",
                    { $map: { input: { "$objectToArray": "$members.regularStudent" }, as: "x", in: "$$x.v" } }
                ]
            }
        }
    },
    {
        $unwind: "$students"
    },
    {
        $group: {
            _id: null,
            UPIDs: { $addToSet: "$students" }
        }
    },
    {
        $project: {
            members: {
                $setDifference: [ userProductUPIDs , "$UPIDs" ]
            },
            _id : 0
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB melalui Mongoose JS - Apa itu findByID?

  2. Simpan luwak () tidak memperbarui nilai dalam array dalam dokumen basis data

  3. luwak memperbarui bidang di MongoDB tidak berfungsi

  4. Cast ke ObjectId gagal untuk nilai 586cc8b3ea780c071bbe2469 di jalur _id untuk model Pengguna

  5. Luwak menambahkan atribut kedaluwarsa untuk bidang tertentu