MongoDB 4.1 TotalRecords 和聚合中的数据

Posted

技术标签:

【中文标题】MongoDB 4.1 TotalRecords 和聚合中的数据【英文标题】:MongoDB 4.1 TotalRecords and Data in Aggregate 【发布时间】:2020-05-18 12:10:11 【问题描述】:

我遇到了一个问题,因为我是 mongo 的新手,但我想解决它。

我有不同的集合,我通过查找进行汇总,效果很好。 但是现在,我想在结果的标题中显示总记录的总和。

我现在的第一个问题是我的参与者关系是一个数组,我的第二个问题是我不知道如何在响应中将 TotalCount 和数据彼此分开。

结果应该是这样的:


 "totalRecords": 12,
 "itemsPerPage": 10,

 "docs": 
    "_id": "7429437848adssk",
    "title": "abc"
    "actors" [
         "name": "Mr.x" ,
         "name": "Mrs.Y"
     ]
 

我通过以下阶段解决了没有总数的聚合:

    放松演员 查找演员 在第一个集合中使用 $first 并在演员中使用 $addToSet 进行分组

我没有计数的响应结果符合预期,但如果我将 $count 添加到组中,它会计算演员,而在 1 个具有 2 个演员的文档上,它会计数 2。但我想计算每个文档的计数。

有人可以为我提供一个关于我的问题的简单工作示例吗?

【问题讨论】:

看看$facet运营商 你有我的小例子吗? 【参考方案1】:

您需要在聚合结束时添加这 3 个步骤


  $facet: 
    totalRecords: [
      
        $count: "totalRecords"
      
    ],
    docs: [
      
      $match: 
      
    ]
  
,

  $unwind: "$docs"
,

  $addFields: 
    totalRecords: 
      $arrayElemAt: [
        "$totalRecords.totalRecords",
        0
      ]
    
  

MongoPlayground

【讨论】:

以上是关于MongoDB 4.1 TotalRecords 和聚合中的数据的主要内容,如果未能解决你的问题,请参考以下文章

案例:怎样使用java实现分页处理?

Mongodb4.4.1分片集群搭建

DW 或者notepad++怎么批量替换相似的内容

SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?

MongoDB安装

ubuntu php mongodb 扩展安装 / 升级