sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan tjekker du $setDifference i to array ved hjælp af mongo-query

Da dette er en opfølgning på et af mine tidligere svar, vil jeg prøve at rette din kode. Den nederste linje er, at du har brug for to forespørgsler, da du ikke kan opgradere din database, så koden skulle se ud som nedenfor:

var queryResult = db.UserDetails.aggregate(
{
$lookup: {
    from: "UserProducts",
    localField: "UID",
    foreignField: "UID",
    as: "userProduct"
    }
},
{ $unwind: "$userProduct" },
{
    "$project": { "_id" : 0, "userProduct.UPID" : 1 }
},
{
    $group: {
        _id: null,
        userProductUPIDs: { $addToSet: "$userProduct.UPID" }
    }
});

let userProductUPIDs = queryResult.toArray()[0].userProductUPIDs;

db.Groups.aggregate([
    {
        $unwind: "$members.regularStudent"
    },
    {
        $group: {
            _id: null,
            UPIDs: { $addToSet: "$members.regularStudent" }
        }
    },
    {
        $project: {
            members: {
                $setDifference: [ userProductUPIDs , "$UPIDs" ]
            },
            _id : 0
        }
    }
]) // should return 100



  1. Hvorfor kan jeg ikke køre lua script i redis efter redis genstart?

  2. Omvendt rækkefølge af elementer hentet fra databasen i ng-repeat

  3. Mongoose:kan ikke få adgang til udfyldt værdi

  4. Hvordan autentificerer Mongolab REST API