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

MongoDB aggregation ดึงเอกสารที่มีค่าฟิลด์เฉพาะ


สำหรับเรื่องนี้ ให้ใช้ aggregate() สมมติว่าเราต้องการดึงเอกสารที่มีฟิลด์ "Age" เป็น "21" มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

> db.demo685.insertOne( ...    { ...       "details": ...       [ ...          { ...             Name:"Chris", ...             Age:21 ...          }, ...          { ...             Name:"David", ...             Age:23 ...          }, ...          { ...             Name:"Bob", ...             Age:21 ...          } ...       ] ...    } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5ea54f6fa7e81adc6a0b395b") }

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

> db.demo685.find();

จะได้ผลลัพธ์ดังนี้

{ "_id" : ObjectId("5ea54f6fa7e81adc6a0b395b"), "details" : [    { "Name" : "Chris", "Age" : 21 },    { "Name" : "David", "Age" : 23 },    { "Name" : "Bob", "Age" : 21 } ] }

คำสั่งสำหรับ MongoDB aggregation

> db.demo685.aggregate([ { $unwind: "$details" }, { $match: { "details.Age": 21 } }, { $project: {_id: 0}} ]).pretty();

จะได้ผลลัพธ์ดังนี้

{ "details" : { "Name" : "Chris", "Age" : 21 } } { "details" : { "Name" : "Bob", "Age" : 21 } }