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

ค้นหาเอกสาร MongoDB ที่องค์ประกอบของอาร์เรย์มีค่าเฉพาะหรือไม่


ในการจับคู่เอกสารใน MongoDB ให้ใช้ $elemMatch ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

<ก่อนหน้า>> db.demo15.insertOne({"Details":[{"Score":56},{"Score":78}]});{ "acknowledged" :true, "insertedId" :ObjectId("5e0f7806d7df943a7cec4fab ")}> db.demo15.insertOne({"Details":[{"Score":86},{"Score":86}]});{ "acknowledged" :true, "insertedId" :ObjectId("5e0f7817d7df943a7cec4fac ")}> db.demo15.insertOne({"Details":[{"Score":97},{"Score":85}]});{ "รับทราบ" :จริง "insertedId" :ObjectId("5e0f7823d7df943a7cec4fad ")}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.demo15.find();

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

{ "_id" :ObjectId("5e0f7806d7df943a7cec4fab"), "Details" :[ { "Score" :56 } { "Score" :78 } ] }{ "_id" :ObjectId(")5e0f7817d7c4943a7, รายละเอียด" :[ { "คะแนน" :86 }, { "คะแนน" :86 } ] }{ "_id" :ObjectId("5e0f7823d7df943a7cec4fad"), "รายละเอียด" :[ { "คะแนน" :97 }, { "คะแนน" :85 } ] }

นี่คือแบบสอบถามเพื่อค้นหาเอกสารที่องค์ประกอบทั้งหมดของอาร์เรย์มีค่าเฉพาะ -

> db.demo15.find({... "Details.Score" :{... $exists :true... },... "Details" :{... $not :{.. $elemMatch :{... "Score" :{... $ne :86... }... }... }... }... });

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

{ "_id" :ObjectId("5e0f7817d7df943a7cec4fac"), "Details" :[ { "Score" :86 } { "Score" :86 } ] }