【问题标题】:How to add a field in the mongoDB query representing a total figure如何在 mongoDB 查询中添加一个表示总数的字段
【发布时间】:2021-11-30 04:43:00
【问题描述】:

我有一个 mongodb 查询

[  
    {$group: { 
        _id: '$status',
        count: {$sum: NumberInt(1)}
    }}
]

查询返回如下结果:

[
    { _id: "A", count: 22 },
    { _id: "B", count: 33 },
    { _id: "C", count: 44 }
]

基于上述,我需要添加一个新字段“totalCount”(例如 22 + 33 + 44 = 99),如下所示:

[
    { _id: "A", count: 22, totalCount: 99 },
    { _id: "B", count: 33, totalCount: 99 },
    { _id: "C", count: 44, totalCount: 99 }
]

非常感谢任何帮助或线索。

【问题讨论】:

    标签: mongodb-query aggregate


    【解决方案1】:

    你必须利用$facet阶段创建多个聚合实例,计算不同阶段的总计数,最后合并成一个输出。

    db.collection.aggregate([
      {
        "$facet": {
          "totalCount": [
            {
              "$group": {
                "_id": null,
                "totalCount": {
                  "$sum": "$count"
                }
              },
              
            },
            
          ],
          "root": [
            {
              "$replaceRoot": {
                "newRoot": "$$ROOT"
              }
            },
            
          ]
        }
      },
      {
        "$unwind": "$root"
      },
      {
        "$replaceRoot": {
          "newRoot": {
            "$mergeObjects": [
              "$root",
              {
                "$arrayElemAt": [
                  "$totalCount",
                  0
                ]
              }
            ],
            
          }
        }
      },
      
    ])
    

    Mongo Sample Execution

    【讨论】:

    • 嗨 hiharsha36,我真的很高兴收到您的回复。我什至尝试用我的一点知识来解决 $facet 的问题并放弃了。我会尝试您的解决方案并很快回来。最好的问候
    • 嗨 hiharsha36,您的查询完美地解决了我的问题,非常感谢和最好的问候 - Mehedi
    • @MehediSalah 很高兴它对您有所帮助。对答案进行投票并将其标记为解决方案,以便帮助其他面临类似问题的人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多