Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

เราสามารถค้นหาอาร์เรย์ของวัตถุใน MongoDB ได้หรือไม่?


ใช่ หากต้องการค้นหาอาร์เรย์ของวัตถุ ให้ใช้ $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" } }