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

ดึงบันทึกจากอาร์เรย์เอกสารย่อยซึ่ง id เริ่มต้นจาก 234 ใน MongoDB


ในการดึงข้อมูลจากอาร์เรย์เอกสารย่อย ให้ใช้ $unwind พร้อมกับ $push สำหรับรหัสที่เริ่มต้นจาก 234 ให้ใช้ regex ใน MongoDB

ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo556.insertOne(
... {
...    _id:101,
...    details:[
...       {
...          id:"234336",
...          Name:"Chris"
...       },
...       {
...          id:"123456",
...          Name:"Bob"
...       },
...       {
...          id:"234987",
...          Name:"Carol"
...       },
...       {
...          id:"989768",
...          Name:"David"
...       },
...       {
...          id:"234888",
...          Name:"Sam"
...       },
...       {
...          id:"847656",
...          Name:"John"
...       }
...    ]
... }
... );
{ "acknowledged" : true, "insertedId" : 101 }

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo556.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : 101, "details" : [
   { "id" : "234336", "Name" : "Chris" },
   { "id" : "123456", "Name" : "Bob" },
   { "id" : "234987", "Name" : "Carol" },
   { "id" : "989768", "Name" : "David" },
   { "id" : "234888", "Name" : "Sam" },
   { "id" : "847656", "Name" : "John" } 
] }

ต่อไปนี้เป็นแบบสอบถามเพื่อดึงบันทึกจากอาร์เรย์เอกสารย่อย -

> db.demo556.aggregate({
...    $match: {
...       "_id": 101
...    }
... }, {
...    $unwind: "$details"
... }, {
...    $match: {
...       "details.id": {
...          $regex: /^234/
...       }
...    }
... }, {
...    $group: {
...       _id: "$_id",
...       "Detail": {
...          $push: "$details"
...       }
...    }
... }).pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "_id" : 101,
   "Detail" : [
      {
         "id" : "234336",
         "Name" : "Chris"
      },
      {
         "id" : "234987",
         "Name" : "Carol"
      },
      {
         "id" : "234888",
         "Name" : "Sam"
      }
   ]
}