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

Truy vấn MongoDB cộng dồn giá trị trường cụ thể trong tài liệu

Để tính tổng giá trị của một trường trên tất cả tài liệu, sử dụng aggregation $group với $sum. Tạo collection:

> db.demo677.insertOne({Value:10});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421f404263e90dac943f8") }
> db.demo677.insertOne({Value:50});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421f704263e90dac943f9") }
> db.demo677.insertOne({Value:20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421fa04263e90dac943fa") }
> db.demo677.insertOne({Value:20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421fe04263e90dac943fb") }

Hiển thị dữ liệu (Value: 10, 50, 20, 20):

> db.demo677.find();

Kết quả:

Aggregation nhóm tất cả (_id: null) và tính tổng Value:

> db.demo677.aggregate({ $group: { _id: null, sum: { $sum: "$Value" } } });

Kết quả tổng = 100:

Giải thích: _id: null gom tất cả document thành 1 nhóm. $sum: "$Value" cộng dồn giá trị trường Value. Tương tự SQL: SELECT SUM(Value) FROM demo677.

Mở rộng:

  • Tổng có điều kiện: { $match: { Value: { $gt: 15 } }, $group: { _id: null, sum: { $sum: "$Value" } } } → 50+20+20=90
  • Tổng theo nhóm: { $group: { _id: "$Category", total: { $sum: "$Value" } } }
  • Dùng $toDecimal cho độ chính xác cao (MongoDB 4.0+)