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

วิธีรวมยอดส่วนหนึ่งของอิลิเมนต์อาร์เรย์ใน MongoDB Aggregation


เพื่อรวมยอดส่วนหนึ่งของอิลิเมนต์อาร์เรย์ ให้ใช้ $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 }