ในการรวมผลรวมของค่าในรายการพจนานุกรม ให้ใช้ $sum พร้อมกับ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo117.insertOne( ... { ... ID:101, ... Details:[ ... { ... Name:'Chris', ... Value1:20, ... Value2:30, ... Value3:10 ... }, ... { ... Name:'David', ... Value1:10, ... Value2:50, ... Value3:30 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e2f02ced8f64a552dae6361") } > db.demo117.insertOne( ... { ... ID:102, ... Details:[ ... { ... Name:'Chris', ... Value1:20, ... Value2:10, ... Value3:20 ... }, ... { ... Name:'David', ... Value1:30, ... Value2:40, ... Value3:10 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e2f02ced8f64a552dae6362") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo117.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e2f02ced8f64a552dae6361"), "ID" : 101, "Details" : [ { "Name" : "Chris", "Value1" : 20, "Value2" : 30, "Value3" : 10 }, { "Name" : "David", "Value1" : 10, "Value2" : 50, "Value3" : 30 } ] } { "_id" : ObjectId("5e2f02ced8f64a552dae6362"), "ID" : 102, "Details" : [ { "Name" : "Chris", "Value1" : 20, "Value2" : 10, "Value3" : 20 }, { "Name" : "David", "Value1" : 30, "Value2" : 40, "Value3" : 10 } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อรวมค่ารวมในรายการพจนานุกรมสำหรับเอกสารทั้งหมด -
> db.demo117.aggregate([{ ... $unwind: "$Details" ... }, { ... $group: { ... _id: "$Details.Name", ... "Value1": { $sum: "$Details.Value1" }, ... "Value2": { $sum: "$Details.Value2" }, ... "Value3": { $sum: "$Details.Value3" } ... } ... }])
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : "David", "Value1" : 40, "Value2" : 90, "Value3" : 40 } { "_id" : "Chris", "Value1" : 40, "Value2" : 40, "Value3" : 30 }