Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tính tổng trường trong mảng MongoDB với $sum

Toán tử $sum trong stage $project của aggregate cho phép tính tổng các giá trị trong một mảng trường số.

Dữ liệu mẫu

> db.demo96.insertOne({
...     "Name" : "Chris",
...     "Details" : [
...         { "Marks":67 },
...         { "Marks":33 },
...         { "Marks":50 }
...     ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d6aadb8903cdd865577ad") }

Truy vấn aggregate tính tổng

> db.demo96.aggregate([
... { "$project": {
...     "Name": 1,
...     "TotalMarks": {
...         "$sum": "$Details.Marks"
...     }
... }}
... ]);

Kết quả

{ "_id" : ObjectId("5e2d6aadb8903cdd865577ad"), "Name" : "Chris", "TotalMarks" : 150 }

Giải thích:

  • "$Details.Marks": Trích xuất tất cả giá trị Marks từ mảng Details → mảng [67, 33, 50]
  • $sum: Tự động cộng dồn tất cả phần tử trong mảng
  • Kết quả: 67 + 33 + 50 = 150

Lưu ý: $sum trong $project khác với $sum trong $group:

  • $project: Tổng của mảng trong mỗi document
  • $group: Tổng của trường trên nhiều document (cần $unwind mảng trước)