在 MongoDB 中查找字段值在其他集合中不存在的文档

Find documents in MongoDB where value of field does not exist in other collection

我的子文档在其父 userFolder 被删除后无法存档。 子文档中的 link 设置为“组”字段,这是其父文档的 objectID 的字符串版本。

我如何进行聚合以提供在 userFolder 集合的 objectID 中找不到“组”值的文档列表

类似这样的方法应该有效,您需要根据需要替换集合和字段名称:

db.child_collection.aggregate([
  {
    $lookup: {
      from: "parent_collection",
      let: {
        parent_group: {
          $toObjectId: "$group"
        }
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $eq: [
                "$_id",
                "$$parent_group"
              ]
            }
          }
        }
      ],
      as: "parent_docs"
    }
  },
  {
    $match: {
      "parent_docs": {
        $size: 0
      }
    }
  }
])

$lookup stage 之后,每个文档都会有一个 parent_docs 数组。如果子文档有一个未删除的父文档,则该数组将只有一个元素。否则它是孤立的,数组将为空。您有兴趣查找孤立文档,因此我们筛选大小为 0.

的数组

Working Mongo Playground