MongoDB 所有具有整数值的字段的总和

标签 mongodb nosql aggregation-framework nosql-aggregation

在聚合框架内,对于每个文档来说,以某种方式是可能的,如下所示:

{
  "Title": "Number orders",
  "2021-03-16": 3,
  "2021-03-15": 6,
  "2021-03-19": 1,
  "2021-03-14": 19
}

获取这样的新文档?

{
  "Title": "Number orders",
  "2021-03-16": 3,
  "2021-03-15": 6,
  "2021-03-19": 1,
  "2021-03-14": 19
  "Total": 29
}

基本上,我想要一个新字段,其中包含整数字段的所有值的总和。

要考虑的另一件事是日期字段是动态的,因此一周可能像示例中的那样,下一周字段将变得像

{
  "Title": "Number orders",
  "2021-03-23": 3,
  "2021-03-22": 6,
  "2021-03-26": 1,
  "2021-03-21": 19
}

谢谢!

最佳答案

演示 - https://mongoplayground.net/p/724nerJUQtK

$$ROOT 是整个文档,使用 $addFields 添加 total 使用 $sum 添加它们使用 $unset

启动并删除 allData
db.collection.aggregate([
  { $addFields: { allData: { "$objectToArray": "$$ROOT" } } } },
  { $addFields: { "total": { $sum: "$allData.v" } } },
  { $unset: "allData" }
])

关于MongoDB 所有具有整数值的字段的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66901413/

相关文章:

mongodb - 不同的命令只给出一个选定的键值,它不提供整个文档?

mysql - (小型)站点是否应该同时使用 SQL 和 noSQL 数据库

spring - 无法获取 MongoDbConnectionException : Failed to authenticate to database

node.js - 通过本地网络通过域名而不是 IP 地址连接到数据库时是否会产生大量开销?

node.js - NodeJS | MongoDB |如何减慢插入速度?

cassandra - 在 Cassandra 数据模型中同步

mongodb - mongodb 查询中的 $project 和 $in

mongodb - 计算有多少文档包含一个字段

javascript - 如何在 mongodb 中映射对象数组并将字符串值转换为数字?

node.js - NodeJS MongoDB 回调 hell