หากต้องการรวมทุกฟิลด์ในเอกสารย่อย ให้ใช้กรอบงานรวม ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -
> db.sumEveryFieldDemo.insertOne( ... { ... "_id":101, ... "PlayerDetails": [ ... {"PlayerName":"John","PlayerScore":1000}, ... {"PlayerName":"Carol","PlayerScore":2000}, ... {"PlayerName":"Sam","PlayerScore":3000} ... ] ... } ... ); { "acknowledged" : true, "insertedId" : 101 }
ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -
> db.sumEveryFieldDemo.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : 101, "PlayerDetails" : [ { "PlayerName" : "John", "PlayerScore" : 1000 }, { "PlayerName" : "Carol", "PlayerScore" : 2000 }, { "PlayerName" : "Sam", "PlayerScore" : 3000 } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อรวมทุกฟิลด์ในเอกสารย่อยของ MongoDB -
> db.sumEveryFieldDemo.aggregate( [ ... { $unwind: "$PlayerDetails" }, ... { $group: { ... _id: '$_id', ... sum: { $sum: '$PlayerDetails.PlayerScore' } ... } } ... ] ).pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : 101, "sum" : 6000 }