首页 > 解决方案 > MongoDB 4.1 TotalRecords 和聚合中的数据

问题描述

我面临一个问题,因为我是 mongo 的新手,但我想解决它。

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

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

结果应如下所示:

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

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

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

  1. 放松演员
  2. 查找演员
  3. 在第一个集合上使用 $first 并在演员的 $addToSet 上分组

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

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

标签: mongodbmongoosecountaggregate

解决方案


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

{
  $facet: {
    totalRecords: [
      {
        $count: "totalRecords"
      }
    ],
    docs: [
      {
      $match: {}
      }
    ]
  }
},
{
  $unwind: "$docs"
},
{
  $addFields: {
    totalRecords: {
      $arrayElemAt: [
        "$totalRecords.totalRecords",
        0
      ]
    }
  }
}

Mongo游乐场


推荐阅读