สำหรับการรวมใน MongoDB ให้ใช้ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo199.insertOne( ... { ... "details1":{ ... "details2":{ ... "details3":{ ... "Name":"Chris", ... "details4":{ ... "details5":{ ... "v1":10, ... "v2":20, ... "v3":30 ... } ... } ... }}}} ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e3c24aa03d395bdc21346e2") } > > db.demo199.insertOne( ... { ... "details1":{ ... "details2":{ ... "details3":{ ... "Name":"Chris", ... "details4":{ ... "details5":{ ... "v1":30, ... "v2":40, ... "v3":50 ... } ... } ... }}}} ...); { "acknowledged" : true, "insertedId" : ObjectId("5e3c24ab03d395bdc21346e3") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo199.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e3c24aa03d395bdc21346e2"), "details1" : { "details2" : { "details3" : { "Name" : "Chris", "details4" : { "details5" : { "v1" : 10, "v2" : 20, "v3" : 30 } } } } } } { "_id" : ObjectId("5e3c24ab03d395bdc21346e3"), "details1" : { "details2" : { "details3" : { "Name" : "Chris", "details4" : { "details5" : { "v1" : 30, "v2" : 40, "v3" : 50 } } } } } }
ต่อไปนี้เป็นแบบสอบถามสำหรับการรวม MongoDB สำหรับเอกสารที่ซ้อนกัน -
> var out = [ ... { ... "$unwind": "$details1.details2" ... }, ... { ... "$group": { ... "_id": "$details1.details2._id", ... "v1": { "$sum": "$details1.details2.details3.details4.details5.v1" }, ... "v2": { "$sum": "$details1.details2.details3.details4.details5.v2" }, ... "v3": { "$sum": "$details1.details2.details3.details4.details5.v3" }, ... } ... } ...] > result = db.demo199.aggregate(out);
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : null, "v1" : 40, "v2" : 60, "v3" : 80 }