在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 测试是在查询中询问“这是一个包含项目的数组”的最有效方法。

09-05 21:06