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

ตั้งเงื่อนไข $gt ใน $and Operator ของ MongoDB

การใช้ $and เพื่อรวมเงื่อนไขหลายอย่าง (Logical AND) พร้อมกับ $gt (Greater Than)

> db.demo680.insertOne({Values: 40});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4461b04263e90dac943fe") }
> db.demo680.insertOne({Values: 70});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4461e04263e90dac943ff") }
> db.demo680.insertOne({Values: [80, 30]});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4462a04263e90dac94400") }
> db.demo680.insertOne({Values: 20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea4463304263e90dac94401") }

แสดงข้อมูล (สังเกตเอกสารที่ 3 Values เป็นอาร์เรย์ [80, 30]):

> db.demo680.find();

คิวรี $and: Values > 60 และมีค่า 30 อยู่ในอาร์เรย์

> db.demo680.find({$and: [{Values: {$gt: 60}}, {Values: 30}]})

ผลลัพธ์ - ได้เฉพาะเอกสารที่ Values = [80, 30]:


คำอธิบาย

  • {Values: {$gt: 60}}: Values ต้องมากกว่า 60 (match ได้ทั้ง 70 และ [80,30] เพราะ 80 > 60)
  • {Values: 30}: Values ต้องมีค่า 30 (match ได้เฉพาะ [80,30] เพราะอาร์เรย์มี 30)
  • $and: ต้องตรงทั้งสองเงื่อนไขพร้อมกัน

การทำงานกับ Array Field

MongoDB match array field โดยอัตโนมัติ: {field: value} จะ match ถ้าอาร์เรย์มีค่านั้นอยู่ (ไม่ต้อง $elemMatch)

$and แบบ Implicit (เข้าใจง่ายกว่า)

MongoDB รวมเงื่อนไขใน object เดียวกันเป็น AND อัตโนมัติ:

// ทั้งสองเทียบเท่า
db.find({$and: [{a: 1}, {b: 2}]});
db.find({a: 1, b: 2});

ใช้ $and จริงเมื่อ: เงื่อนไขซ้ำฟิลด์ (เช่น {$and: [{x: {$gt: 5}}, {x: {$lt: 10}}]}) หรือสร้าง query แบบ dynamic