สำหรับสิ่งนี้ ให้สร้างสองคอลเลกชันและเพิ่มเอกสาร หลังจากนั้น ใช้ $lookup เพื่อจับคู่ ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo101.insertOne(... { "_id" :"1", "Details" :[ { "PId" :"200" }, { "PId" :"201" }, { "PId" " :"201" } ] }... ){ "acknowledged" :true, "insertedId" :"1" }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo101.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :"1", "Details" :[ { "PId" :"200" }, { "PId" :"201" }, { "PId" :"201" } ] }ก่อน>ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างคอลเลกชันที่สองกับเอกสารบางส่วน -
> db.demo102.insertOne(... { "_id" :"201", "CustEmailId" :"[email protected]" }... );{ "acknowledged" :true, "insertedId" :"201" }แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo102.find();สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :"200", "CustEmailId" :"[email protected]" }{ "_id" :"201", "CustEmailId" :"[email protected]" }ต่อไปนี้เป็นแบบสอบถามเพื่อรวมฟิลด์อาร์เรย์ JSON สำหรับฟิลด์ที่ตรงกันของคอลเลกชันอื่น ๆ -
> db.demo101.aggregate(... [... {$unwind:"$Details"},... {$lookup :{from :"demo102", "localField":"Details.PId" , "foreignField":"_id" เป็น :"out"}},... {$project :{"_id":1, "Details.PId":{$arrayElemAt:["$out.CustEmailId",0 ]}}},... {$group:{_id:"$_id", รายละเอียด :{$push :"$Details"}}}... ]... ).pretty()สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :"1", "Details" :[ { "PId" :"[email protected]" }, { "PId" :"[email protected]" }, { "PId" :"[email protected]" } ]}