数组对象值的总和 mongodb
Sum from array object value by mongodb
我正在尝试解决一个问题。我想编写一个查询,在我的文档中找到一个文档,该文档大于数组中 A 列和 B 列的总和。我在这里写了一个例子。我是 MongoDB 的新手,我搜索了很多但找不到解决方案。那么有人可以帮我解决这个问题吗?这是我的示例文档:
文档 1:
{
"_id" : "1",
"array": [
{
"user": "1",
"A": 2,
"B": 0
},
{
"user": "2",
"A": 3,
"B": 1},
{
"user": "3",
"A": 0,
"B": 5
}
]
}
和文件 2:
{
"_id" : "2",
"array": [
{
"user": "4",
"A": 1,
"B": 1
},
{
"user": "5",
"A": 2,
"B": 2
}
]
}
例如,文档 1 中数组所有元素中 A 和 B 的总和为 11,文档 2 中数组元素中 A 和 B 的总和为 6。所以我想获取文档 1 进行输出,因为它是在对所有元素中的所有 A 和 B 求和后大于 2。
您可以试试这个查询:
- 创建一个名为
total
(或任何您想要的名称)和 $add
值的辅助字段。这将添加数组的 $sum
。这意味着您要将 A 和 B 中的所有值加在一起。
- 然后按辅助字段排序,取第一位最大的
$limit
只有一个(最大的)
- 并且
$project
不输出辅助字段
db.collection.aggregate([
{
"$addFields": {
"total": {
"$add": [
{
"$sum": "$array.A"
},
{
"$sum": "$array.B"
}
]
}
}
},
{
"$sort": {
"total": -1
}
},
{
"$limit": 1
},
{
"$project": {
"total": 0
}
}
])
示例here
我正在尝试解决一个问题。我想编写一个查询,在我的文档中找到一个文档,该文档大于数组中 A 列和 B 列的总和。我在这里写了一个例子。我是 MongoDB 的新手,我搜索了很多但找不到解决方案。那么有人可以帮我解决这个问题吗?这是我的示例文档:
文档 1:
{
"_id" : "1",
"array": [
{
"user": "1",
"A": 2,
"B": 0
},
{
"user": "2",
"A": 3,
"B": 1},
{
"user": "3",
"A": 0,
"B": 5
}
]
}
和文件 2:
{
"_id" : "2",
"array": [
{
"user": "4",
"A": 1,
"B": 1
},
{
"user": "5",
"A": 2,
"B": 2
}
]
}
例如,文档 1 中数组所有元素中 A 和 B 的总和为 11,文档 2 中数组元素中 A 和 B 的总和为 6。所以我想获取文档 1 进行输出,因为它是在对所有元素中的所有 A 和 B 求和后大于 2。
您可以试试这个查询:
- 创建一个名为
total
(或任何您想要的名称)和$add
值的辅助字段。这将添加数组的$sum
。这意味着您要将 A 和 B 中的所有值加在一起。 - 然后按辅助字段排序,取第一位最大的
$limit
只有一个(最大的)- 并且
$project
不输出辅助字段
db.collection.aggregate([
{
"$addFields": {
"total": {
"$add": [
{
"$sum": "$array.A"
},
{
"$sum": "$array.B"
}
]
}
}
},
{
"$sort": {
"total": -1
}
},
{
"$limit": 1
},
{
"$project": {
"total": 0
}
}
])
示例here