mongodb - MongoDB - 计算包含数组元素的数组中的值的总和
问题描述
我有一个聚合查询生成一个包含数组元素的数组。我如何 $sum 值并产生类似于以下内容的输出:
{ "additionalReminders": 7 }
这是数据结构的一个例子。请注意,一些数组元素是空的,应该被忽略或计为 0:
{
"additionalReminders": [
[
"1",
"1"
],
[],
[],
[
"1"
],
[],
[
"1"
],
[],
[
"1"
],
[],
[
"1"
],
[],
[],
[
"1"
]
]
}
解决方案
这是您要查找的内容:
db.collection.aggregate([
{
"$unwind": "$additionalReminders"
},
{
"$unwind": "$additionalReminders"
},
{
$group: {
_id: null,
"additionalReminders": {
$sum: {
"$toInt": "$additionalReminders"
}
}
}
},
{
$project: {
_id: false,
additionalReminders: true
}
}
])
游乐场:https ://mongoplayground.net/p/JInbHAmc_yV
这个想法是展开你的领域几次,以获得这个输出:
...
{
"_id": ObjectId("5a934e000102030405000000"),
"additionalReminders": "1"
},
{
"_id": ObjectId("5a934e000102030405000000"),
"additionalReminders": "1"
},
{
"_id": ObjectId("5a934e000102030405000000"),
"additionalReminders": "1"
},
...
那么这只是对$additionalReminders
字段求和的简单问题,但不是在我们将其转换为 Int 之前。
推荐阅读
- java - 如何在ecore中创建上限为1的EReference列表
- pandas - 处理熊猫数据框中的换行符
- c# - 构建发布时出错:“清单引用文件'MyProject.exe',它不是有效负载的一部分。”
- r - 合并来自不同数据框的同一列
- ngx-bootstrap - 构建或运行 ngx-bootstrap 测试时出错
- visual-studio-code - 如何使可变自定义数据可用于自定义扩展?
- c++ - 在别人提交任务的前提下,如何在集群上使用多个gpus?
- python - 如何按日期创建一个文件夹并将文件放入其中?
- apache-kafka - Kafka,commitSync 成功
- angular - 为什么 TranslateService Angular 不会将当前语言添加到 localStorage?