Introduction to MongoDB $sum Operator
The MongoDB $sum
operator is a very useful aggregation operator that can be used to perform sum operations on specified fields. In this article, we will introduce the $sum
operator in terms of syntax, usage scenarios, examples, and conclusions.
Syntax
The syntax of the $sum
operator is very simple, and can be used in aggregation pipelines:
$sum: <expression>
Here, <expression>
represents the field or expression that needs to be summed. For example, if you want to sum the score
field in a collection, you can write:
db.collection.aggregate([
{ $group: { _id: "$name", totalScore: { $sum: "$score" } } }
])
This will sum the score
field for each name
field and save the result in the totalScore
field.
Usage Scenarios
The $sum
operator can be widely used in various aggregation scenarios, especially for numerical calculations on specified fields. For example, you can use the $sum
operator to calculate the sum of various fields in a collection, or to calculate the average, maximum, and minimum values of a field.
Examples
We will introduce three examples of the $sum
operator:
Example 1: Summation
Assuming that there is a score sheet as follows:
{ name: "Alice", score: 85 }
{ name: "Lucy", score: 92 }
{ name: "James", score: 78 }
{ name: "Kobe", score: 90 }
Now, if we want to sum the score
field in this score sheet, we can use the following aggregation pipeline:
db.scores.aggregate([{ $group: { _id: null, totalScore: { $sum: "$score" } } }])
After running, the following result will be obtained:
{ "_id" : null, "totalScore" : 345 }
Example 2: Group Summation
In Example 1, we summed the entire collection. Now, assuming that we want to sum the scores of each student, we can use the following aggregation pipeline:
db.scores.aggregate([
{ $group: { _id: "$name", totalScore: { $sum: "$score" } } }
])
After running, the following result will be obtained:
{ "_id" : "Alice", "totalScore" : 85 }
{ "_id" : "Lucy", "totalScore" : 92 }
{ "_id" : "James", "totalScore" : 78 }
{ "_id" : "Kobe", "totalScore" : 90 }
Example 3: Conditional Summation
In some cases, we may need to perform summation operations on documents that meet specific conditions. For example, assuming that we only want to calculate the total score of students who score greater than or equal to 90, we can use the following aggregation pipeline:
db.scores.aggregate([
{ $match: { score: { $gte: 90 } } },
{ $group: { _id: null, totalScore: { $sum: "$score" } } }
])
After running, the following result will be obtained:
{ "_id" : null, "totalScore" : 182 }
Here, the $match
operator is used to filter out documents with a score greater than or equal to 90, and then the $group
operator is used to perform summation operations.
Conclusion
Through the introduction in this article, we have learned about the syntax, usage scenarios, and examples of the $sum
operator. In general, the $sum
operator is a very useful aggregation operator, which can conveniently perform summation operations on specified fields and is applicable to various aggregation scenarios. It should be noted that if you want to sum multiple fields, you can use expressions to perform calculations within the $sum
operator.