$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"
}
}
第二次编辑:
将所有文档中的 nodoPadre
类型更新为对象 ID 类型,并将模式中的类型更改为 type: mongoose.Types.ObjectId
nodoPadre: {
type: mongoose.Types.ObjectId,
required: [false, '2'],
index: true
}
我有以下合集:
[{
"_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"
}
}
第二次编辑:
将所有文档中的 nodoPadre
类型更新为对象 ID 类型,并将模式中的类型更改为 type: mongoose.Types.ObjectId
nodoPadre: {
type: mongoose.Types.ObjectId,
required: [false, '2'],
index: true
}