MongoDB $sum 运算符介绍
Mongodb $sum
运算符是一个非常实用的聚合运算符,它可以对指定字段进行求和操作。
语法
$sum
运算符的语法非常简单,可以在聚合管道中使用:
$sum: <expression>
其中,<expression>
表示需要求和的字段或表达式。例如,如果要对某个集合中的 score
字段进行求和,可以这样写:
db.collection.aggregate([
{ $group: { _id: "$name", totalScore: { $sum: "$score" } } }
])
这样,就可以对每个 name
字段下的 score
字段进行求和,并将结果保存到 totalScore
字段中。
使用场景
$sum
运算符可以广泛应用于各种聚合场景中,特别适用于需要对指定字段进行数值运算的情况。例如,可以用 $sum
运算符计算某个集合中各个字段的总和,或者对某个字段进行平均值、最大值、最小值等计算。
示例
下面我们将分别介绍 $sum
运算符的三个示例:
示例 1:求和
假设有如下一份成绩单:
{ name: "Alice", score: 85 }
{ name: "Lucy", score: 92 }
{ name: "James", score: 78 }
{ name: "Kobe", score: 90 }
现在,我们希望对这份成绩单中的 score
字段进行求和,可以使用以下聚合管道:
db.scores.aggregate([{ $group: { _id: null, totalScore: { $sum: "$score" } } }])
运行后,将得到如下结果:
{ "_id" : null, "totalScore" : 345 }
示例 2:分组求和
在示例 1 中,我们对整个集合进行了求和操作。现在,假设我们想要对每个学生的成绩进行求和,可以使用以下聚合管道:
db.scores.aggregate([
{ $group: { _id: "$name", totalScore: { $sum: "$score" } } }
])
运行后,将得到如下结果:
{ "_id" : "Alice", "totalScore" : 85 }
{ "_id" : "Lucy", "totalScore" : 92 }
{ "_id" : "James", "totalScore" : 78 }
{ "_id" : "Kobe", "totalScore" : 90 }
示例 3:条件求和
在某些情况下,我们可能需要对满足特定条件的文档进行求和操作。例如,假设我们只想计算成绩大于等于 90 分的学生的总分数,可以使用以下聚合管道:
db.scores.aggregate([
{ $match: { score: { $gte: 90 } } },
{ $group: { _id: null, totalScore: { $sum: "$score" } } }
])
运行后,将得到如下结果:
{ "_id" : null, "totalScore" : 182 }
这里使用了 $match
运算符来筛选出成绩大于等于 90 分的文档,然后再使用 $group
运算符进行求和操作。
结论
总的来说,$sum
运算符是一个非常实用的聚合运算符,可以方便地对指定字段进行求和操作,适用于各种聚合场景。需要注意的是,如果要对多个字段进行求和,可以在 $sum
运算符中使用表达式进行计算。