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

Tính trung bình trường dữ liệu trong MongoDB

Để tính giá trị trung bình của một trường cụ thể, MongoDB sử dụng toán tử $avg trong pipeline aggregate.

Tạo collection và chèn dữ liệu

> db.demo214.insertOne({"Marks":56,"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e319403d395bdc2134705") }
> db.demo214.insertOne({"Marks":86,"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e319c03d395bdc2134706") }
> db.demo214.insertOne({"Marks":78,"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e31a403d395bdc2134707") }

Xem dữ liệu

> db.demo214.find();
{ "_id" : ObjectId("5e3e319403d395bdc2134705"), "Marks" : 56, "Name" : "David" }
{ "_id" : ObjectId("5e3e319c03d395bdc2134706"), "Marks" : 86, "Name" : "Bob" }
{ "_id" : ObjectId("5e3e31a403d395bdc2134707"), "Marks" : 78, "Name" : "Carol" }

Truy vấn tính trung bình

Sử dụng $group với _id: null để gom tất cả document thành một nhóm duy nhất:

> db.demo214.aggregate([
...     {
...         $group: {
...             "_id": null,
...             AverageValue: { $avg: "$Marks" }
...         }
...     }
... ])

Kết quả

{ "_id" : null, "AverageValue" : 73.33333333333333 }

Lưu ý quan trọng: Ví dụ gốc có lỗi cú pháp "_id":"_id" (chuỗi) thay vì "_id": null. Đúng là _id: null để nhóm toàn bộ collection. Nếu muốn nhóm theo từng nhóm riêng (ví dụ theo Name), hãy dùng "_id": "$Name".