สำหรับสิ่งนี้ ให้ใช้การรวมพร้อมกับ $zip zip ใช้เพื่อย้ายอาร์เรย์ ให้เราสร้างคอลเลกชันที่มีเอกสาร -
<ก่อนหน้า>> db.demo339.insertOne({Id:101,Score1:["98","56"],Score2:[67,89]});{ "acknowledged" :true, "insertedId" :ObjectId( "5e529ee5f8647eb59e5620a2")}แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo339.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :ObjectId("5e529ee5f8647eb59e5620a2"), "Id" :101, "Score1" :[ "98", "56" ], "Score2" :[ 67, 89 ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อซิปสองอาร์เรย์ด้วย $zip และสร้างอาร์เรย์ใหม่ของวัตถุ -
> db.demo339.aggregate([... {... "$project":{... "AllArrayObject":{... "$map":{... "input":{. .. "$objectToArray":{... "$arrayToObject":{... "$zip":{... "inputs":[... "$Score1",... "$Score2". .. ]... }... }... }... },.... "as":"el",... "in":{... "Score1":"$$ el.k",... "Score2":"$$el.v"... }... }... }... }... }... ])
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :ObjectId("5e529ee5f8647eb59e5620a2"), "AllArrayObject" :[ { "Score1" :"98", "Score2" :67 }, { "Score1" :"56", "Score2" :89 } ] }