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

คิวรี่ MongoDB ค้นหาเอกสารที่ทุกค่าในอาร์เรย์มากกว่าเงื่อนไขที่กำหนด

หากต้องการค้นหาเอกสารที่ ทุกค่า ในอาร์เรย์ต้องมากกว่าค่าที่กำหนด ให้ใช้ตัวดำเนินการ $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"