$graphLookup return 空数组

$graphLookup return void array

我有以下合集:

[{
    "_id":  "60035d0a1599912a5c814e58",
    "idUsuario": "600365521599912a5c814e5e",
    "parentNode": "",
    "piernaPadre": "",
    "estado": "1"
    },
    {
    "_id": "6003827b06b4423c9ca7e6aa",
    "idUsuario": "60036e53dda7df34749ebf3a",
    "parentNode": "60035d0a1599912a5c814e58",
    "piernaPadre": "d",
    "estado": 1
    },
    {
    "_id": "60038c92ea7d593fe029cc0f",
    "idUsuario": "600382a506b4423c9ca7e6ab",
    "parentNode": "6003827b06b4423c9ca7e6aa",
    "piernaPadre": "d",
    "estado": 1
}]

我需要获取节点的后代,我正在尝试使用 $graphLookup

$graphLookup: {
          from: "nodoModel",
          startWith: "$_id",
          connectFromField: "_id",
          connectToField: "parentNode",
          as: "arrayDes"
        }

但不起作用,return无效。有错吗?

谢谢。

编辑 1

现在我可以在尝试获取节点的祖先时得到结果:

 $graphLookup: {
          from: "nodos",
          startWith: "$_id",
          connectFromField: "_id",
          connectToField: "nodoPadre",
          as: "padre"
        }

结果如下:

[
    {
    _id: 60035d0a1599912a5c814e58,
    idUsuario: '600365521599912a5c814e5e',
    parentNode: '',
    piernaPadre: '',
    estado: '1',
    padre: [ [Object] ]
    },
    {
    _id: 6004589436a40941f48121f8,
    idUsuario: '600365e9ccf1e51b2cab341f',
    parentNode: '60035d0a1599912a5c814e58',
    piernaPadre: 'd',
    estado: 1,
    createdAt: 2021-01-17T15:32:36.986Z,
    updatedAt: 2021-01-17T15:32:36.986Z,
    __v: 0,
    padre: [ [Object] ]
    },
    {
    _id: 6004592936a40941f48121fa,
    idUsuario: '6004591536a40941f48121f9',
    parentNode: '6004589436a40941f48121f8',
    piernaPadre: 'd',
    estado: 1,
    createdAt: 2021-01-17T15:35:05.626Z,
    updatedAt: 2021-01-17T15:35:05.626Z,
    __v: 0,
    padre: [ [Object] ]
    }
]

但我需要得到后代而不是祖先

编辑 2

(在原始模型中parentNode被命名为nodoPadre)

这是我的代码截图:

那就是 console.log:

arrayDes 是一个空数组。我正在使用 mongoose,可能与问题有关?

编辑 3

我正在尝试将 nodoPadre 的类型更改为 objectId

尝试查询获取后代,

  • $match 放条件
  • $grouphLookup和你的一样
  { $match: { nodoPadre: "" } },
  {
    $graphLookup: {
      from: "collection",
      startWith: "$_id",
      connectFromField: "_id",
      connectToField: "nodoPadre",
      as: "arrayDes"
    }
  }

Playground


第二次编辑:

将所有文档中的 nodoPadre 类型更新为对象 ID 类型,并将模式中的类型更改为 type: mongoose.Types.ObjectId

nodoPadre: {
  type: mongoose.Types.ObjectId,
  required: [false, '2'],
  index: true
}