Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何使用$nin中的动态值从mongo中的查找中筛选元素_Mongodb - Fatal编程技术网

Mongodb 如何使用$nin中的动态值从mongo中的查找中筛选元素

Mongodb 如何使用$nin中的动态值从mongo中的查找中筛选元素,mongodb,Mongodb,我有两个系列 收藏 [{id:1,name:A},{id:2,name:B},{id:3,name:C},{id:4,name:D},{id:5,name:E}] 收藏B [{aid:2,product:X,date:2009-11-09},{aid:4,product:Y,date:2009-11-09},{aid:3,product:Y,date:2009-11-08}] 我想创建一个聚合,它将返回A中没有辅助项的所有元素 预期结果: [{id:1,name:A},{id:3,name:

我有两个系列

收藏

[{id:1,name:A},{id:2,name:B},{id:3,name:C},{id:4,name:D},{id:5,name:E}]
收藏B

[{aid:2,product:X,date:2009-11-09},{aid:4,product:Y,date:2009-11-09},{aid:3,product:Y,date:2009-11-08}]
我想创建一个聚合,它将返回A中没有辅助项的所有元素

预期结果:

[{id:1,name:A},{id:3,name:C},{id:5,name:E}]
这就是我试过的

CollectionB.aggregate([    
        {
            $match: {date : {$gte: "2009-11-09T00:00:00.000Z" ,$lt: "2009-11-09T23:59:59.999Z"} }
        },
        { $lookup: {
            from: "CollectionA",
            let: {
                aid: "$aid"
            },
            pipeline: [
              { $match: {
                  $expr: { 
                      $not: [ { $eq: [ "$$aid", "$id" ] } ] 
                   }
              } }
            ],
            as: "result"
          } 
        },
], function (err, result) {}
这仅在应用程序层中可能吗


TIA

尝试以下聚合查询(不同之处在于您可以聚合为
CollectionA
而不是
CollectionB
):


尝试以下聚合查询(不同之处在于可以聚合为
CollectionA
而不是
CollectionB
):


谢谢,真的很有用,谢谢,真的很有用。
db.getCollection('CollectionA').aggregate([
{
    "$lookup":   // Run a $lookup to join these two collections
    {
       "from": "CollectionB",
       "localField": "id",
       "foreignField": "aid",
       "as": "combinedResults"
     }
},
{ 
    "$match" : {
        "combinedResults" : [] // Filter the result for which the aid wasn't found
    }
}
])

//Voila! Hope this helps!