繁体   English   中英

如何在树形结构上列出 MongoDB 中的所有项目?

[英]How to list all items in the MongoDB on the tree structure?

考虑这样的结构:

在此处输入图像描述

class Group {
  _id: ObjectId
  subGroups: ObjectId[]
  name: string
  info: string
}

数据库中 A 组的文档应该是...

_id: ObjectId("6092387f9c69970c20fe648a")
subGroups: [
  ObjectId("6092387f9c69970c20fe648b"),  // Group B
  ObjectId("6092387f9c69970c20fe648c"), // Group C
],
name: "Group A",
info: "..."

如何在 mongodb 中查询以获取包括其自身在内的所有孩子?

例如,

A查询:Output A, B, C, D, E, F, G, H, I, J

B查询:Output D, E

您要使用的称为$graphLookup ,它会递归迭代,直到找不到更多匹配项,如下所示:

db.collection.aggregate([
  {
    $match: {
      "name": "Group A"
    }
  },
  {
    $graphLookup: {
      from: "collection",
      startWith: "$subGroups",
      connectFromField: "subGroups",
      connectToField: "_id",
      as: "groupHierarchy",
      
    }
  },
  {
    $project: {
      result: {
        "$concatArrays": [
          [
            "$name"
          ],
          {
            $map: {
              input: "$groupHierarchy",
              as: "group",
              in: "$$group.name"
            }
          }
        ]
      }
    }
  }
])

蒙戈游乐场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM