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

Structured grouping query ใน MongoDB เพื่อแสดงผลพร้อมฟิลด์ใหม่ที่นับจำนวน


สำหรับเรื่องนี้ ให้ใช้ $group ใน MongoDB ใน aggregate() $group จะจัดกลุ่มเอกสารอินพุตตามนิพจน์ _id ที่ระบุ และสำหรับแต่ละการจัดกลุ่มที่แตกต่างกัน จะส่งออกเอกสาร มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

> db.demo534.insertOne({_id:10,"ProductId":100,"ProductName":"Product-1"}); { "acknowledged" : true, "insertedId" : 10 } > db.demo534.insertOne({_id:11,"ProductId":100,"ProductName":"Product-2"}); { "acknowledged" : true, "insertedId" : 11 } > db.demo534.insertOne({_id:12,"ProductId":101,"ProductName":"Product-1"}); { "acknowledged" : true, "insertedId" : 12 }

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

> db.demo534.find();

จะได้ผลลัพธ์ดังนี้

{ "_id" : 10, "ProductId" : 100, "ProductName" : "Product-1" } { "_id" : 11, "ProductId" : 100, "ProductName" : "Product-2" } { "_id" : 12, "ProductId" : 101, "ProductName" : "Product-1" }

คำสั่งสำหรับ structured grouping query ใน MongoDB

> db.demo534.aggregate( ... { ...    $group: ...    { ...       _id: ...          { ...             productName: "$ProductName", ...             productId: "$ProductId" ...          }, ...          count: ...             { ...                $sum: 1 ...             } ...          }, ...       }, ...       { ...          $group: ...             { ...                _id: "$_id.productId", ...                itemCounts: ...                   { ...                      "$push": ...                         { ...                            productName: "$_id.productName", ...                            count: "$count" ...                   } ...             } ...       } ... })

จะได้ผลลัพธ์ดังนี้

{ "_id" : 101, "itemCounts" : [ { "productName" : "Product-1", "count" : 1 } ] } { "_id" : 100, "itemCounts" : [ { "productName" : "Product-2", "count" : 1 }, { "productName" : "Product-1", "count" : 1 } ] }