sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man kontrollerar $setDifference i två arrayer med mongo-query

Eftersom detta är en uppföljning av ett av mina tidigare svar ska jag försöka fixa din kod. Summan av kardemumman är att du behöver två frågor eftersom du inte kan uppgradera din databas så koden bör se ut som nedan:

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. Finns det en bra MongoDB Queue Implementation med öppen källkod för C#-drivrutinen

  2. pymongo - Meddelandelängden är större än serverns maximala meddelandestorlek

  3. Analysera JSON till ett MONGODB-dokument

  4. SailsJS och Mongos unika attribut ignoreras