Ale*_*der 2 tree recursion mongodb aggregation-framework
我在 MongoDB 中有一个具有树结构的文档列表。我想要一个聚合查询,它返回给定_id属性的所有嵌套子项的计数。
结构:
{
'_id': '1',
'parentId': null,
},
{
'_id': '2',
'parentId': '1',
},
{
'_id': '3',
'parentId': '1',
},
{
'_id': '4',
'parentId': '3',
}
Run Code Online (Sandbox Code Playgroud)
聚合结果:(给出_id='1':)
{
total_children: 3
}
Run Code Online (Sandbox Code Playgroud)
我知道这可能需要一个阶段,这个问题与 MongoDB 中集合的递归搜索$graphLookup非常相似,但在某种意义上是向后的。
您可以使用下面的聚合查询。
递归查找以找到给定 _id 的所有子级,然后$size对子级进行计数。
db.col.aggregate([
{"$match":{"_id":"1"}},
{"$graphLookup":{
"from":col,
"startWith":"$_id",
"connectFromField":"_id",
"connectToField":"parentId",
"as":"children"
}},
{"$project":{"total_children":{"$size":"$children"}}}
])
Run Code Online (Sandbox Code Playgroud)