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

จะแสดงฟิลด์เฉพาะในอาร์เรย์โดยใช้ $project ใน MongoDB และละเว้นฟิลด์อื่นได้อย่างไร


หากต้องการแสดงฟิลด์เฉพาะ ให้ใช้ $project พร้อมกับ $unwind หากต้องการละเว้นฟิลด์ ให้ตั้งค่าเป็น 0 ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo731.insertOne({ "ProductInformation": [ { ProductId:"Product-1", ProductPrice:80 }, { ProductId:"Product-2", ProductPrice:45 }, { ProductId:"Product-3", ProductPrice:50 } ] } );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eac5efd56e85a39df5f6341")
}

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

> db.demo731.find();

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

{ "_id" : ObjectId("5eac5efd56e85a39df5f6341"), "ProductInformation" : [ { "ProductId" : "Product-1", "ProductPrice" : 80 }, { "ProductId" : "Product-2", "ProductPrice" : 45 }, { "ProductId" : "Product-3", "ProductPrice" : 50 } ] }

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงฟิลด์เฉพาะในอาร์เรย์โดยใช้ $project ใน MongoDB -

> db.demo731.aggregate([
...    { $unwind: "$ProductInformation" },
...    { $match: { "ProductInformation.ProductPrice": 80} },
...    { $project: {_id: 0,"ProductInformation.ProductPrice":0}}
... ])

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

{ "ProductInformation" : { "ProductId" : "Product-1" } }