对于上下文,我正在使用MongoDB 3.6.4,并且尝试为ACL权限构建分层架构,但是我将把问题归结为一个问题并保存详细信息。
说我有一个简单的集合C
,其中parents
是C
中其他文档的引用列表:
{
_id: ObjectId
parents: Array(ObjectId)
}
如果我进行以下汇总:
[
{
$match: {_id: ObjectId("f00...")}
},
{
$graphLookup: {
from: "C",
startWith: "$parents",
connectFromField: "parents",
connectToField: "_id",
as: "graph"
}
}
]
我得到如下数据:
{
"_id": ObjectId("f00..."),
"parents": [ObjectId("f01..."), ObjectId("f02..."), ...],
"graph": [<doc1>, <doc2>, <doc3>, ...]
}
是否可以将graph
项拆分为文档?例如来自上一个输出示例:
{
"_id": ObjectId("f00..."),
"parents": [ObjectId("f01..."), ObjectId("f02..."), ...]
}
<doc1>
<doc2>
<doc3>
答案 0 :(得分:1)
您可以尝试添加以下阶段进行查询。
[
{"$project":{"data":{"$concatArrays":[["$$ROOT"],"$graph"]}}},
{"$unwind":"$data"},
{"$project":{"data.graph":0}},
{"$replaceRoot":{"newRoot":"$data"}}
]