ในการรับรายการจากอาร์เรย์อ็อบเจ็กต์ ให้ใช้ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo459.insertOne(... { "_id" :1,... "Information" :[... {... "Name" :"Chris",... "_id" :new ObjectId(),... "details" :[... "HR"... ]... },... {...... "Name" :"David",... " _id" :new ObjectId(),... "details" :[... "Developer"... ]... },... {...... "Name" :"Bob",. .. "_id" :new ObjectId(),... "details" :[... "Account"... ]... }... ]... }... ){ "acknowledged" :จริง "insertedId" :1 }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo459.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :1, "Information" :[ { "Name" :"Chris", "_id" :ObjectId("5e7ef4a7dbcb9adb296c95c9"), "details" :[ "HR" ] }, { "Name" :"เดวิด", "_id" :ObjectId("5e7ef4a7dbcb9adb296c95ca"), "รายละเอียด" :[ "ผู้พัฒนา" ] }, { "ชื่อ" :"บ๊อบ", "_id" :ObjectId("5e7ef4a7dbcb9adb"),96c95cs" :[ "บัญชี" ] } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อรับรายการจากอาร์เรย์วัตถุใน MongoDB -
<ก่อนหน้า>> db.demo459.aggregate([... { $unwind:'$Information' },... { $unwind:'$Information.details' },... { $match:{ 'Information. ชื่อ':{ $in:["Chris","Bob"]} } },... { $group:{ _id:null, detailList:{ $addToSet:'$Information.details' } } },.. . ])สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :null, "detailList" :[ "Account", "HR" ] }