gpt4 book ai didi

MongoDB $graphLookup 获取子级所有级别的深层嵌套结果

转载 作者:行者123 更新时间:2023-12-03 02:16:01 27 4
gpt4 key购买 nike

https://www.slideshare.net/mongodb/webinar-working-with-graph-data-in-mongodb 中所述, 幻灯片 50 可以在 View 上使用 $graphLookup 以获得嵌套格式的 2 层深度树结构。

我有一个 MongoDB 集合,其中树节点作为文档,格式如下:

{ "_id" : { "$oid" : "5b1a952361c6fa3418a15660" }, 
"nodeId" : 23978995,
"name" : "settings",
"type" : "Node",
"parentId" : [ 23978893, 23979072, 23979081 ] }

我创建了一个 View ,如下所示:

db.createView("treeView", "node", [
{
$graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
maxDepth: 0,
as: "children"
}
}
]);

我执行图形查找,如下所示:

db.node.aggregate([ 
{ $match: {"nodeId": 23978786 } },
{
$graphLookup: {
from: "treeView",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
maxDepth: 0,
as: "children"
}
}
]);

我的问题是如何获得整个层次结构、所有级别的深度?

最佳答案

不幸的是,您无法获得嵌套格式的完整深度。使用 View 是一种解决方法,可让您执行该操作,但您需要为所需的每个嵌入级别创建一个新 View 。相反,我会考虑在不提供深度的情况下执行 graphLookup,从根级别开始,在单个查询中获取所有层次结构,然后再在应用程序级别计算树。

这看起来像这样:

db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);

这应该让您一次性获取整个层次结构,因此接下来,您需要根据“children”数组中的信息计算应用程序中的树。

关于MongoDB $graphLookup 获取子级所有级别的深层嵌套结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50767930/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com