ใช้โอเปอเรเตอร์ $gt ร่วมกับ find() เพื่อค้นหาเอกสารที่มีค่าในอาร์เรย์ซ้อนมากกว่าค่าที่กำหนด สร้างคอลเลกชันตัวอย่าง:
> db.demo317.insertOne({
'id':101,
'details':[{'Score':78, Name:"Chris"}, {'Score':88, Name:"David"}]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e69cf8647eb59e562060") }
> db.demo317.insertOne({
'id':102,
'details':[{'Score':90, Name:"Chris"}, {'Score':91, Name:"David"}]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e6adf8647eb59e562061") }
แสดงข้อมูล:
> db.demo317.find();
คิวรีหาเอกสารที่มี Score ในอาร์เรย์ details มากกว่า 89:
> db.demo317.find({"details.Score" : {"$gt": 89}});
ผลลัพธ์ (ได้เฉพาะเอกสาร id: 102):
{ "_id" : ObjectId("5e50e6adf8647eb59e562061"), "id" : 102, "details" : [ { "Score" : 90, "Name" : "Chris" }, { "Score" : 91, "Name" : "David" } ] }
การทำงานของ $gt กับอาร์เรย์
- MongoDB จะจับคู่เอกสารหาก มีอย่างน้อยหนึ่งสมาชิก ในอาร์เรย์ผ่านเงื่อนไข
- ในตัวอย่าง เอกสาร id:101 มี Score 78 และ 88 (ไม่มีตัวไหน > 89) จึงไม่ถูกเลือก
- เอกสาร id:102 มี Score 90 และ 91 (ทั้งคู่ > 89) จึงถูกเลือก
- ใช้
$elemMatchหากต้องการเงื่อนไขหลายอย่างบนสมาชิกตัวเดียวกัน