sql >> Database >  >> NoSQL >> MongoDB

Hoe $setDifference in array &Object te gebruiken met Mongo DB

Je moet die tweede aggregatie repareren en alle UPIDs . krijgen als een array. Om dat te bereiken kun je $cond gebruiken en gebaseerd op $type retourneer een array of gebruik $objectToArray probeer om de conversie uit te voeren:

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. Hoe ReferenceField-gegevens in mongoengine te krijgen?

  2. Mongoose upsert dubbele sleutelfout

  3. Subdocument in MongoDB opvragen/bijwerken met behulp van C#-stuurprogramma

  4. MongoDB $ of vraag