当使用MongoDB存储一个文档中含有数组对象时,经常需要对数组中的某些属性进行求和操作。下面将使用两个示例说明如何使用mongodb实现数组对象的求和方法。
示例一
假设有以下的文档结构:
{
"_id" : ObjectId("5f0c732508d48a34e20e03d9"),
"name" : "example",
"values" : [
{
"value" : 10
},
{
"value" : 20
},
{
"value" : 30
}
]
}
如果需要统计values.value
的总和,可以通过以下代码实现:
db.collection.aggregate([
{
$project: {
totalSum: { $sum: "$values.value" }
}
}
])
输出结果如下:
{ "_id" : ObjectId("5f0c732508d48a34e20e03d9"), "totalSum" : 60 }
-
英文解释:
db.collection
:代表要操作哪个集合;$project
:表示查询的投影阶段;totalSum
:自定义名称,代表输出结果的key;$sum
:代表对数组中所有value
属性值进行求和。
示例二
考虑另一个例子,文档结构如下:
{
"_id" : ObjectId("5f0c744308d48a34e20e03dd"),
"name" : "example",
"values" : [
{
"value1" : 20,
"value2" : 10
},
{
"value1" : 30,
"value2" : 5
},
{
"value1" : 40,
"value2" : 15
}
]
}
假设此时需要求values.value1
和values.value2
的总和,可以通过以下代码实现:
db.collection.aggregate([
{
$project: {
_id: 0,
totalSum1: { $sum: "$values.value1" },
totalSum2: { $sum: "$values.value2" },
}
}
]);
输出结果如下:
{ "totalSum1" : 90, "totalSum2" : 30 }
-
英文解释:
db.collection
:代表要操作哪个集合;$project
:表示查询的投影阶段;_id: 0
:代表不输出_id
属性值;totalSum1
/totalSum2
:自定义名称,代表输出结果中的key;$sum
:代表对数组中所有value
属性值进行求和。
小结
以上是使用mongodb实现数组对象求和的两种示例,希望对您有所帮助。在实际项目中,需要根据具体需求来选择合适的方法进行处理,以保证高效率、高性能的实现。