首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对MongoDB中的集合进行递归计数

问对MongoDB中的集合进行递归计数
EN

Stack Overflow用户
提问于 2018-01-24 07:33:51
回答 1查看 642关注 0票数 2

我在MongoDB中有一个树形结构的文档列表。我想要一个聚合查询,它返回所有嵌套子对象的计数,给定一个_id属性。

结构:

代码语言:javascript
复制
{
  '_id': '1',
  'parentId': null,
},
{
  '_id': '2',
  'parentId': '1',
},
{
  '_id': '3',
  'parentId': '1',
},
{
  '_id': '4',
  'parentId': '3',
}

聚合结果:(给定:_id='1')

代码语言:javascript
复制
{
  total_children: 3
}

我知道这可能需要一个$graphLookup阶段,这个问题与Recursive search on a collection in MongoDB非常相似,但在某种意义上是倒退的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 08:00:43

您可以使用下面的聚合查询。

递归查找来定位给定_id的所有子对象,然后使用$size来计算孩子的数量。

代码语言:javascript
复制
db.col.aggregate([
  {"$match":{"_id":"1"}},
  {"$graphLookup":{
    "from":col,
    "startWith":"$_id",
    "connectFromField":"_id",
    "connectToField":"parentId",
    "as":"children"
  }},
  {"$project":{"total_children":{"$size":"$children"}}}
])
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48412571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档