是否可以加入(使用 $graphlookup 或任何其他方法)超过 2 个集合? 例如我有 3 个收藏:
用户、用户组、队列具有以下关系:
用户
有一个或多个队列
用户
拥有一个或多个用户组
用户组
有一个或多个队列
现在对于给定的用户
,我想要所有队列
文档(直接关联,或通过用户组关联)
更新 这个查询对我有用:
{
"aggregate": "user",
"pipeline": [
{
"$match": {
"name": "test"
}
},
{
"$graphLookup": {
"from": "queue",
"startWith": "$queues",
"connectFromField": "queues",
"connectToField": "name",
"as": "userqueues"
}
},
{
"$graphLookup": {
"from": "usergroup",
"startWith": "$userGroups",
"connectFromField": "userGroups",
"connectToField": "name",
"as": "allusergroups"
}
},
{
"$unwind": "$allusergroups"
},
{
"$graphLookup": {
"from": "queue",
"startWith": "$allusergroups.queues",
"connectFromField": "allusergroups",
"connectToField": "name",
"as": "groupqueues"
}
}
]
}
最佳答案
尝试一下这个聚合管道。
// Run this on user
[{
$lookup: {
"from": "queus",
"localField": "_id",
"foreignField": "user",
"as": "user_queus"
}
},
{
$lookup: {
"from": "usergroup",
"localField": "_id",
"foreignField": "users",
"as": "usergroups"
}
},
{
$unwind: "usergroups"
},
{
$lookup: {
"from": "queus",
"localField": "usergroups._id",
"foreignField": "usergroup",
"as": "usergroup_queus"
}
}
]
关于MongoDB 3.4 - 是否可以使用 `$graphlookup` 或其他内容执行 2 个以上集合的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43551130/