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

การตั้งเงื่อนไขหลายอย่างและดึงข้อมูลในช่วงค่าที่กำหนดใน MongoDB

ใช้ $gt และ $lt ร่วมกันเพื่อกรองค่าในช่วงที่ต้องการ

เมื่อต้องการดึงเอกสารที่มีค่าอยู่ในช่วงเฉพาะ (Range Query) ให้ใช้ $gt (มากกว่า) และ $lt (น้อยกว่า) ร่วมกันในเงื่อนไขเดียวกัน

ตัวอย่างข้อมูลทดสอบ

> db.demo59.insertOne({ "Values": 50 });
> db.demo59.insertOne({ "Values": 10 });
> db.demo59.insertOne({ "Values": 58 });
> db.demo59.insertOne({ "Values": 78 });

แสดงข้อมูลทั้งหมด

> db.demo59.find();

ผลลัพธ์:

{ "_id": ObjectId("..."), "Values": 50 }
{ "_id": ObjectId("..."), "Values": 10 }
{ "_id": ObjectId("..."), "Values": 58 }
{ "_id": ObjectId("..."), "Values": 78 }

คำสั่งดึงเอกสารที่ Values อยู่ระหว่าง 51 ถึง 70

> db.demo59.find({ Values: { $gt: 51, $lt: 70 } });

ผลลัพธ์ที่ได้

{ "_id": ObjectId("..."), "Values": 58 }

คำอธิบาย

  • $gt: 51: ค่าต้องมากกว่า 51 (ไม่รวม 51)
  • $lt: 70: ค่าต้องน้อยกว่า 70 (ไม่รวม 70)
  • ทั้งสองเงื่อนไขต้องเป็นจริงพร้อมกัน (AND logic)

ตัวเลือกอื่นสำหรับช่วงที่รวมขอบเขต

  • $gte: 50, $lte: 70: รวม 50 และ 70 ด้วย
  • { Values: { $in: [50, 58, 70] } }: ถ้าต้องการค่าเฉพาะบางค่า

ประสิทธิภาพ

ควรสร้างดัชนีบนฟิลด์ Values เพื่อให้ Range Query ทำงานได้เร็ว:

> db.demo59.createIndex({ Values: 1 });