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

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


เพื่อดึงข้อมูลจากซับดอกูเมนต์อาร์เรย์ ให้ใช้ $unwind ร่วมกับ $push สำหรับ id ที่เริ่มต้นด้วย 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"       }    ] }