เพื่อรวมยอดส่วนหนึ่งของอิลิเมนต์อาร์เรย์ ให้ใช้ $first ร่วมกับ $sum มาสร้างคอลเล็กชันกันเถอะ
> db.demo610.insertOne({Values:[10,20,30,40,50]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e9747b8f57d0dc0b182d62e") }
แสดงเอกสารทั้งหมดด้วยเมธอด find()
> db.demo610.find().pretty()
ผลลัพธ์ที่ได้
{ "_id" : ObjectId("5e9747b8f57d0dc0b182d62e"), "Values" : [ 10, 20, 30, 40, 50 ] }
คำสั่งรวมยอดส่วนหนึ่งของอิลิเมนต์อาร์เรย์ใน MongoDB Aggregation (หาผลรวมยกเว้นค่าแรก)
> db.demo610.aggregate([
{$unwind:"$Values"},
{$group:{"_id":"$_id", "1st":{$first:"$Values"}, "All":{$sum:"$Values"}}},
{$project:{"_id":"$_id", "SumOfAllMinus1":{$subtract:["$All","$1st"]}}},
{$group:{"_id":null, "SumOfAllExcept1stValue":{$sum:"$SumOfAllMinus1"}}}
])
ผลลัพธ์ที่ได้
{ "_id" : null, "SumOfAllExcept1stValue" : 140 }