ใช่ หากต้องการค้นหาอาร์เรย์ของวัตถุ ให้ใช้ $unwind ใน MongoDB aggregate() หากต้องการจับคู่ ให้ใช้ $match ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo623.insertOne( ... { ... _id:1, ... details:[ ... { ... Name:"Chris" ... }, ... { ... DueDate:new ISODate("2020-01-10") ... }, ... { ... CountryName:"US" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : 1 }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo623.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : 1, "details" : [ { "Name" : "Chris" }, { "DueDate" : ISODate("2020-01-10T00:00:00Z") }, { "CountryName" : "US" } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อค้นหาอาร์เรย์ของวัตถุใน MongoDB -
> db.demo623.aggregate({$unwind: "$details"}, ... {$match: {"details.Name":"Chris"}}, ... {$project: {"details.Name": 1}})
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : 1, "details" : { "Name" : "Chris" } }