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

Chọn tài liệu có giá trị lớn hơn trung bình trong MongoDB

Sử dụng aggregate() để tính trung bình với $avg, sau đó dùng find() với $gt để lọc các tài liệu lớn hơn trung bình.

Tạo collection:

> db.demo552.insertOne({values:10});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1c9e5f92834d7f05ea") }
> db.demo552.insertOne({values:50});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1f9e5f92834d7f05eb") }
> db.demo552.insertOne({values:40});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b289e5f92834d7f05ec") }

Hiển thị tất cả:

> db.demo552.find();

Kết quả (10, 50, 40):

{ "_id" : ObjectId("5e8e3b1c9e5f92834d7f05ea"), "values" : 10 }
{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }

Bước 1: Tính trung bình qua aggregate:

> var findAvg = db.demo552.aggregate([
...     { "$group": { "_id": "null", Average: { "$avg": "$values"} }}
... ]).toArray()[0]["Average"];

Bước 2: Lọc tài liệu values > trung bình (trung bình = 33.33):

> db.demo552.find({ "values": { "$gt": findAvg } })

Kết quả (50 và 40):

{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }