$match กรองเอกสารเพื่อส่งเฉพาะเอกสารที่ตรงกับเงื่อนไขที่ระบุไปยังขั้นตอนไปป์ไลน์ถัดไป
โครงการ $ จะส่งผ่านเอกสารพร้อมกับฟิลด์ที่ร้องขอไปยังขั้นตอนถัดไปในไปป์ไลน์
ให้เราดูตัวอย่างและสร้างคอลเลกชันที่มีเอกสาร -
<ก่อนหน้า>> db.demo545.insert({Name:"Chris",details:{SubjectScore1:56,SubjectScore2:56}})WriteResult({ "nInserted" :1 })> db.demo545.insert({Name:"เดวิด" รายละเอียด:{SubjectScore1:78,SubjectScore2:78}})WriteResult({ "nInserted" :1 })แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo545.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :ObjectId("5e8e246e9e5f92834d7f05d5"), "Name" :"Chris", "details" :{ "SubjectScore1" :56, "SubjectScore2" :56 } }{ "_id" :ObjectId("5ef8ed247609 "), "ชื่อ" :"เดวิด", "รายละเอียด" :{ "SubjectScore1" :78, "SubjectScore2" :78 } }
ต่อไปนี้เป็นแบบสอบถามเพื่อใช้ $match และ $project -
>db.demo545.aggregate([{$match:{}},{$project:{"_id":0,"details.SubjectScore1":1,out:"$details.SubjectScore2"}},{ $group:{_id:"$out"}}])
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :78 }{ "_id" :56 }