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 } } }
])
不确定非聚合查询为什么不起作用。