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

จะค้นหาองค์ประกอบอาร์เรย์เฉพาะในเอกสาร MongoDB พร้อมแบบสอบถามและตัวกรองพร้อมช่วงได้อย่างไร


สำหรับสิ่งนี้ ให้ใช้ aggregate() ใน MongoDB ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo351.insertOne(... {...... "_id" :"101",... "ProductDetails" :[... {... "ProductName" :"Product- 1",... "ProductPrice" :500... },... {... "ProductName" :"Product-2",... "ProductPrice" :400... }... ]. .. }... );{ "acknowledged" :จริง "insertedId" :"101" }> db.demo351.insertOne(... {...... "_id" :"102",.. . "ProductDetails" :[... {... "ProductName" :"Product-3",... "ProductPrice" :200... },... {... "ProductName" :"Product- รายละเอียดผลิตภัณฑ์ 4",... "ProductPrice" :800... }... ]... }... );{ "acknowledged" :true, "insertedId" :"102" }

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() &mnus;

> db.demo351.find();

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

{ "_id" :"101", "ProductDetails" :[ { "ProductName" :"Product-1", "ProductPrice" :500 }, { "ProductName" :"Product-2", "ProductPrice" :400 } ]}{ "_id" :"102", "ProductDetails" :[ { "ProductName" :"Product-3", "ProductPrice" :200 }, { "ProductName" :"Product-4", "ProductPrice" :800 } ] }

ต่อไปนี้เป็นแบบสอบถามเพื่อค้นหาองค์ประกอบอาร์เรย์เฉพาะในเอกสาร MongoDB พร้อมแบบสอบถามและตัวกรองที่มีช่วง -

> db.demo351.aggregate([... {... $match:{ _id:"102" }... },... {... $addFields:{... ProductDetails:{ ... $filter:{... input:"$ProductDetails",... cond:{... $and:[... { $gt:[ "$$this.ProductPrice", 600 ] }, ... { $lt:[ "$$this.ProductPrice", 900 ] }... ]... }... }... }... }... }... ]) 

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

{ "_id" :"102", "ProductDetails" :[ { "ProductName" :"Product-4", "ProductPrice" :800 } ] }