Mongo Query查找并打印集合A中不在集合B中的记录

时间:2019-03-19 21:47:49

标签: mongodb

Mongo查询以查找和打印集合A中不在集合B中的记录。

假设存在一个主集合“供应商”,其中“ _id”在“项目”集合中被称为“供应商”。

有时,供应商将从“供应商”集合中删除,但是与该供应商关联的项目仍保留在数据库中。如果我需要查找那些孤立项目,应该使用哪种mongo查询?

供应商收藏

    {
        "_id": ObjectId("11111111"),
        "name": "Vendor AAA"
    }
    {
        "_id": ObjectId("22222222"),
        "name": "Vendor BBB"
    }

物品收藏

{
    "_id": ObjectId("xxxxxxxxx"),
    "supplier": ObjectId("11111111"),
    "name": "item1"
}
{
    "_id": ObjectId("yyyyyyyy"),
    "supplier": ObjectId("3333333333")
    "name": "item2"
}

输出应打印类似其供应商的项目 找不到ObjectId(“ 3333333333”)。

{
    "_id": ObjectId("yyyyyyyy")     
}

我在下面的查询中尝试过。但是它同时打印了两个项目。

var vendorList = db.getCollection('vendors').find({},{"_id":1});  
db.getCollection('items').find({"supplier" : {$nin : [vendorList ]}},{"_id":1}).

以下汇总查询有效。

db.items.aggregate([
 { $lookup:{  from: 'vendors',  localField: 'supplier',  foreignField: '_id',  as: 'matched_docs'} }
,{ $match: {  'matched_docs' : { $size: 0 } } }   
])

不确定非聚合查询为什么不起作用。

0 个答案:

没有答案