Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để nhận điểm xếp hạng trung bình trong MongoDB dựa trên id trùng lặp?


Đối với mức trung bình trong MongoDB, hãy sử dụng $ avg. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu. Tại đây, chúng tôi có các id trùng lặp với xếp hạng cho mỗi -

> db.demo606.insertOne({id:1,rating:5});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972dfbf57d0dc0b182d623")
}
> db.demo606.insertOne({id:1,rating:4});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972dfef57d0dc0b182d624")
}
> db.demo606.insertOne({id:2,rating:3});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972e09f57d0dc0b182d625")
}
> db.demo606.insertOne({id:1,rating:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972e0ef57d0dc0b182d626")
}
> db.demo606.insertOne({id:2,rating:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972e15f57d0dc0b182d627")
}
> db.demo606.insertOne({id:2,rating:3});{
   "acknowledged" : true, "insertedId" : ObjectId("5e972e1bf57d0dc0b182d628")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.demo606.find();

Điều này sẽ tạo ra kết quả sau -

{ "_id" : ObjectId("5e972dfbf57d0dc0b182d623"), "id" : 1, "rating" : 5 }
{ "_id" : ObjectId("5e972dfef57d0dc0b182d624"), "id" : 1, "rating" : 4 }
{ "_id" : ObjectId("5e972e09f57d0dc0b182d625"), "id" : 2, "rating" : 3 }
{ "_id" : ObjectId("5e972e0ef57d0dc0b182d626"), "id" : 1, "rating" : null }
{ "_id" : ObjectId("5e972e15f57d0dc0b182d627"), "id" : 2, "rating" : null }
{ "_id" : ObjectId("5e972e1bf57d0dc0b182d628"), "id" : 2, "rating" : 3 }

Sau đây là truy vấn để nhận điểm xếp hạng trung bình dựa trên id trùng lặp -

> db.demo606.aggregate(
...    [
...       { "$group": {
...          "_id": "$id",
...          "AverageRating": { "$avg": { "$ifNull": ["$rating",0 ] } }
...       }}
...    ]
... );

Điều này sẽ tạo ra kết quả sau -

{ "_id" : 2, "AverageRating" : 2 }
{ "_id" : 1, "AverageRating" : 3 }