如何使用父引用删除存储在 mongodb 中的子树

How do I delete a sub tree stored in mongodb with parent reference

我有一个集合,它将树数据存储为 mongo 带有父引用的数据库文档,如 https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-parent-references/

中所述

我的问题是,如何使用 mongodb 查询删除节点(文档)和该节点下的所有文档(子节点等)。我不想解析和获取所有 ID 并删除它们。是否有任何 mongo mongo 查询可以帮助我删除以父引用作为起始参数的整个子树。

提前致谢!

干杯

有点难以想象你在想什么,但你可以运行一个自$graphLookup,并根据该层次结构获取文档列表。

你可以检查一个example I wrote here

管道是

db.collection.aggregate({
  $match: {
    _id: "Books"
  }
},
{
  "$graphLookup": {
    "from": "collection",
    "startWith": "$_id",
    "connectFromField": "_id",
    "connectToField": "parent",
    "as": "ids"
  }
},
{
  $project: {
    "ids": {
      $map: {
        input: "$ids",
        as: "id",
        in: "$$id._id"
      }
    },
    "_id": 0
  }
})

那么你只需要这样的东西:

db.coll.deleteMany({"_id":{$in:[listHere]}})

到该列表,您需要添加父节点。