sql >> Databáze >  >> NoSQL >> MongoDB

Jak zkontrolovat $setDifference ve dvou polích pomocí mongo-query

Protože toto navazuje na jednu z mých předchozích odpovědí, pokusím se váš kód opravit. Pointa je, že potřebujete dva dotazy, protože nemůžete upgradovat databázi, takže kód by měl vypadat takto:

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. Složené indexy MongoDB – Záleží na pořadí řazení?

  2. V MongoShell:Nelze se připojit k mé sbírce, db.collection_name vrací NaN

  3. MongoDB $sort

  4. Výjimka používající mongodb jako úložiště mezipaměti infinispan