sql >> Database >  >> NoSQL >> MongoDB

Hoe $ setDifference in twee arrays te controleren met behulp van mongo-query

Aangezien dit een vervolg is op een van mijn eerdere antwoorden, zal ik proberen uw code te repareren. Het komt erop neer dat je twee queries nodig hebt omdat je je database niet kunt upgraden, dus de code zou er als volgt uit moeten zien:

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. Wat is het grootste verschil tussen Redis en Membase?

  2. Kan een eenmaal gecompileerd model niet overschrijven Mongoose

  3. Spring boot probeert verbinding te maken met mongo bij het toevoegen van mongo-java-driver maven-afhankelijkheid

  4. Hoe een array van objecten op te slaan in Mongoose DB met slechts één aanroep?