Sử dụng aggregation $match lọc và $group với $sum tính tổng. Tạo collection:
> db.getSumOfFieldsDemo.insertOne({"Customer_Id":101,"Price":50,"Status":"Active"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06cec29e4dae213890ac55") }
> db.getSumOfFieldsDemo.insertOne({"Customer_Id":102,"Price":200,"Status":"Inactive"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06ced19e4dae213890ac56") }
> db.getSumOfFieldsDemo.insertOne({"Customer_Id":101,"Price":3000,"Status":"Active"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06cedd9e4dae213890ac57") }
> db.getSumOfFieldsDemo.insertOne({"Customer_Id":103,"Price":400,"Status":"Active"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06cee79e4dae213890ac58") }
Hiển thị tài liệu:
> db.getSumOfFieldsDemo.find().pretty();
Aggregation: lọc Status="Active", gom theo Customer_Id, tính tổng Price:
Kết quả - tổng Price của khách hàng Active:
Quy trình: 1)
$matchlọc sớm chỉ tài liệu Active (tối ưu hiệu suất), 2)$groupgom theo Customer_Id, 3)$sumcộng dồn Price.