Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

วิธีหาค่าเฉลี่ย Rating ใน MongoDB โดยอิงจาก ID ที่ซ้ำกัน


สำหรับการหาค่าเฉลี่ยใน MongoDB ให้ใช้ $avg มาสร้างคอลเล็กชันพร้อมเอกสารที่มี ID ซ้ำพร้อม Rating กันเถอะ

> 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") }

แสดงเอกสารทั้งหมดด้วยเมธอด find()

> db.demo606.find();

ผลลัพธ์ที่ได้

{ "_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 }

คำสั่งหาค่าเฉลี่ย Rating โดยอิงจาก ID ที่ซ้ำกัน (จัดการ null ด้วย $ifNull)

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

ผลลัพธ์ที่ได้

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