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

Truy vấn MongoDB tính tổng trường cụ thể theo điều kiện

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) $match lọc sớm chỉ tài liệu Active (tối ưu hiệu suất), 2) $group gom theo Customer_Id, 3) $sum cộng dồn Price.