MongoDB 使用 $graphLookup 跨越多个 collections 的树结构

MongoDB tree structure using $graphLookup spanning multiple collections

我从 MongoDB 开始,我正在尝试构建存储在不同 collection 中的 objects 的树结构。我知道层次结构有多深,所以递归不是问题。

树的每一层都存储在不同的collection中(出于我无法控制的原因),所以我必须从Collection_A开始,在[中获取所有children =14=],然后从 Collection_C 中获取 Collection_B 中的所有 children 个元素。 Collection_B 中的每个项目都具有来自 Collection_A 的 parent 的 _idCollection_C 中的每个项目都具有其 [=52= 的 $_id ] 来自 Collection_B.
此外,每个项目只有一个 parent,但可以有零个、一个或多个 children。

如何获取 Collection_A 中元素的所有 children 和 grandchildren?
我知道如何使用 $graphLookupCollection_B 中得到 children,但我该如何更深入呢?我认为我的问题是为 children.

数组中的每个元素引用 $_id 字段

Here 是一个 link mongoplayground,具有我的 collection 的基本结构和我尝试做的事情。

编辑:在@Hussam 的帮助下我走得更远,但我意识到我的 post 不够清楚。

这就是我想要实现的目标:

[
  {
    "_id": 1,
    "key_A": "value_a1"
    "children_A": [
      {
        "_id": 11,
        "id_A": 1,
        "key_B": "value_b2",
        "children_B": [
          {
            "_id": 103,
            "id_B": 11,
            "key_C": "value_c4"
          },
          {
            "_id": 102,
            "id_B": 11,
            "key_C": "value_c3"
          }
        ]
      },
      {
        "_id": 10,
        "id_A": 1,
        "key_B": "value_b1",
        "children_B": [
          {
            "_id": 101,
            "id_B": 10,
            "key_C": "value_c2"
          },
          {
            "_id": 100,
            "id_B": 10,
            "key_C": "value_c1"
          }
        ]
      }
    ]
  }
]

您现有的管道中存在一些错误。你在第二阶段的startWith不是变量。

https://mongoplayground.net/p/uIWP_mk75xm

为了回应您的编辑,您需要执行以下操作才能将其放入集合 A 对象中

https://mongoplayground.net/p/tl8yWeTM26i