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

MongoDB: ดึงค่าที่มากกว่าค่าที่กำหนดจากอาร์เรย์ซ้อน (Embedded List)

ใช้โอเปอเรเตอร์ $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 หากต้องการเงื่อนไขหลายอย่างบนสมาชิกตัวเดียวกัน