【发布时间】:2021-03-19 20:50:05
【问题描述】:
我有一个数据集
db.users.insertMany([ {“_id”:1,“名称”:“abcd”}, {“_id”:2,“名称”:“abcd”}, {“_id”:3,“名称”:“abcd”}, {“_id”:4,“名称”:“abcd”}, {“_id”:5,“名称”:“abcd”}, {“_id”:6,“名称”:“abcd”}, {“_id”:7,“名称”:“abcd”}, {“_id”:8,“名称”:“abcd”}, {“_id”:9,“名称”:“abcd”}, {“_id”:10,“名称”:“abcd”}, {"_id":11, "名称":"abcd"}, {“_id”:12,“名称”:“abcd”}, {“_id”:13,“名称”:“abcd”}, {“_id”:14,“名称”:“abcd”}, {“_id”:15,“名称”:“abcd”}, {“_id”:16,“名称”:“abcd”}, ])
db.users_hirarchy.insertMany([{ "_id": "1101", “_来自”:14, “_to”:15 },{ "_id": "1102", “_来自”:14, “_to”:16 },{ "_id": "1103", “_来自”:15, “_to”:3 },{ "_id": "1104", “_来自”:15, “_to”:5 },{ "_id": "1105", “_来自”:15, “_to”:7 },{ "_id": "1106", “_来自”:3, “_to”:1 },{ "_id": "1107", “_来自”:3, “_to”:2 },{ "_id": "1108", “_来自”:3, “_to”:4 },{ "_id": "1109", “_来自”:3, “_to”:4 },{ "_id": "1110", “_来自”:3, “_to”:4 },{ "_id": "1111", “_来自”:3, “_to”:4 }
])
我想要实现的是这样的
{
nodes:[
{
"_id" : 3,
"name": "abcd"
},
{
"_id" : 4,
"name": "abcd"
}
] ,
hirarchies : [
{
"_id" : 3,
"Hierachy" : [
{
"_id" : "1106",
"_from" : 3.0,
"_to" : 1.0,
"depth" : NumberLong(0)
},
{
"_id" : "1107",
"_from" : 3.0,
"_to" : 2.0,
"depth" : NumberLong(0)
} ] },
{
"_id" : 4,
"Hierachy" : [
{
"_id" : "1106",
"_from" : 3.0,
"_to" : 1.0,
"depth" : NumberLong(0)
} ] } ]
我已经编写了一个查询,但它没有给出所需的结果。如何使用 graphlookup 来做到这一点。 我尝试过的查询是
db.users.aggregate([
{ $graphLookup: {
from: "users_hirarchy",
connectToField: "_from",
startWith: "$_id",
maxDepth: 0,
connectFromField: "_to",
depthField: "depth",
as: "hirarchy"
} } ,
{$project:{"Data":{
"id":"$_id",
"name":"$name"},
"Hierachy":"$hirarchy"}
}])
我怎样才能达到我想要的输出?
【问题讨论】:
标签: json mongodb formatting lookup graphlookup