MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да проверя $setDifference в два масива с помощта на mongo-query

Тъй като това е продължение на един от предишните ми отговори, ще се опитам да поправя кода ви. Изводът е, че имате нужда от две заявки, тъй като не можете да надстроите вашата база данни, така че кодът трябва да изглежда по-долу:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Прехвърляне на обикновен обект към мангустен документ

  2. Pymongo намира стойност в поддокументи

  3. MongoDB Групиране по поле, преброяване и сортиране desc

  4. MongoDB не работи във Vagrant Centos Box

  5. Как правилно да повторите през голям json файл