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

如何删除存储在mongodb中的具有父引用的子树,mongodb,mongodb-query,spring-data-mongodb,Mongodb,Mongodb Query,Spring Data Mongodb,我有一个集合,它将树数据存储为带有父引用的mongo db文档,如中所述 我的问题是,如何使用mongodb查询删除节点(文档)以及该节点下的所有文档(子节点的子节点等)。我不想解析和获取所有ID并删除它们。是否有任何mongo mongo查询可以帮助我删除以父引用作为起始参数的整个子树 提前谢谢 干杯很难想象你在想什么,但是你可以运行self$graphLookup,并获得基于该层次结构的文档列表 你可以查一个 管道是 db.collection.aggregate({ $match: {

我有一个集合,它将树数据存储为带有父引用的mongo db文档,如中所述

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

提前谢谢


干杯

很难想象你在想什么,但是你可以运行self$graphLookup,并获得基于该层次结构的文档列表

你可以查一个

管道是

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]}})

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

如果答案有帮助,请至少提供一些反馈。我正在休假,因此无法测试它。这很有帮助。谢谢!