หากต้องการค้นหาเอกสารที่ ทุกค่า ในอาร์เรย์ต้องมากกว่าค่าที่กำหนด ให้ใช้ตัวดำเนินการ $not ร่วมกับ $elemMatch และ $lte (น้อยกว่าหรือเท่ากับ) เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[89,43,32,45]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9e9f9b50a6c6dd317adb3") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[32,33,34,40]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea13b50a6c6dd317adb4") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[45,56,66,69]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea25b50a6c6dd317adb5") }
> db.arrayElementsNotGreaterThanDemo.insertOne({"Scores":[46,66,77,88]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9ea3cb50a6c6dd317adb6") }
แสดงเอกสารทั้งหมด:
> db.arrayElementsNotGreaterThanDemo.find().pretty();
{ "_id" : ObjectId("5cd9e9f9b50a6c6dd317adb3"), "Scores" : [ 89, 43, 32, 45 ] }
{ "_id" : ObjectId("5cd9ea13b50a6c6dd317adb4"), "Scores" : [ 32, 33, 34, 40 ] }
{ "_id" : ObjectId("5cd9ea25b50a6c6dd317adb5"), "Scores" : [ 45, 56, 66, 69 ] }
{ "_id" : ObjectId("5cd9ea3cb50a6c6dd317adb6"), "Scores" : [ 46, 66, 77, 88 ] }
สำคัญ: คิวรี่ find({Scores: {$gt:45}}) จะคืนค่าเอกสารที่มี อย่างน้อยหนึ่งค่า มากกว่า 45 (ไม่ใช่ทุกค่า)
เพื่อค้นหาเอกสารที่ ทุกค่า ในอาร์เรย์มากกว่า 45 ให้ใช้:
> db.arrayElementsNotGreaterThanDemo.find({
Scores: {
$not: {
$elemMatch: { $lte: 45 }
}
}
});
ผลลัพธ์ (เฉพาะเอกสารที่ทุกค่ามากกว่า 45):
{ "_id" : ObjectId("5cd9ea3cb50a6c6dd317adb6"), "Scores" : [ 46, 66, 77, 88 ] }
หลักการ: ใช้ $not + $elemMatch + $lte: 45 หมายถึง "ไม่มีองค์ประกอบไหนที่น้อยกว่าหรือเท่ากับ 45" = "ทุกองค์ประกอบมากกว่า 45"