在MongoDB中不存在正确集合的情况下,是否有与LEFT JOIN查询等效的方法?
SQL:
SELECT * FROM TableA as A LEFT JOIN TableB as B ON A.id = B.id
WHERE B.Id IS NULL
MongoDB:
???
附注:我的初步草图:
db.getCollection('collA').aggregate([
{
$lookup:
{
from: "collB",
localField: "_id",
foreignField: "_id",
as: "collB"
}
}
//, {$match : collB is empty}
])
最佳答案
好吧,您的编辑基本上可以找到答案。只需$match
,其中数组为空:
db.getCollection('collA').aggregate([
{ "$lookup": {
"from": "collB",
"localField": "_id",
"foreignField": "_id",
"as": "collB"
}},
{ "$match": { "collB.0": { "$exists": false } } }
])
在
$exists
的数组索引上进行 0
测试是在查询中询问“这是一个包含项目的数组”的最有效方法。