Để truy vấn tài liệu thỏa mãn nhiều điều kiện đồng thời (logic AND) và giá trị nằm trong một khoảng (range), MongoDB cho phép kết hợp nhiều toán tử so sánh ($gt, $lt, $gte, $lte) trên cùng một trường trong object filter.
1. Tạo bộ sưu tập và chèn dữ liệu
> db.demo59.insertOne({ "Values": 50 });
> db.demo59.insertOne({ "Values": 10 });
> db.demo59.insertOne({ "Values": 58 });
> db.demo59.insertOne({ "Values": 78 });
2. Xem dữ liệu
> db.demo59.find();
Kết quả:
{ "_id": ObjectId("..."), "Values": 50 }
{ "_id": ObjectId("..."), "Values": 10 }
{ "_id": ObjectId("..."), "Values": 58 }
{ "_id": ObjectId("..."), "Values": 78 }
3. Truy vấn giá trị trong khoảng 51 đến 70 (51 < Values < 70)
> db.demo59.find({ Values: { $gt: 51, $lt: 70 } });
4. Kết quả
{ "_id": ObjectId("..."), "Values": 58 }
Giải thích: Object { $gt: 51, $lt: 70 } áp dụng logic AND ngầm định: giá trị phải > 51 VÀ < 70.
Các biến thể phổ biến:
- Khoảng bao gồm hai đầu:
{ $gte: 50, $lte: 60 } - Kết hợp nhiều trường:
{ Age: { $gte: 18 }, Status: "active" } - Dùng
$andrõ ràng khi cần logic phức tạp:{ $and: [ { Values: { $gt: 51 } }, { Values: { $lt: 70 } } ] }