Để tìm kiếm trong khoảng giá trị và lấy top kết quả, kết hợp find() filter, sort() và limit(). Tạo collection:
> db.demo665.insertOne({"Value":10});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1bf1424113ea5458c7d08") }
> db.demo665.insertOne({"Value":15});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1bf1b24113ea5458c7d09") }
> db.demo665.insertOne({"Value":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1bf1e24113ea5458c7d0a") }
> db.demo665.insertOne({"Value":25});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1bf2324113ea5458c7d0b") }
> db.demo665.insertOne({"Value":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1bf2b24113ea5458c7d0c") }
Hiển thị dữ liệu:
> db.demo665.find();
Kết quả (Value: 10, 15, 55, 25, 20):
Tìm Value ≤ 30, sắp xếp giảm dần, lấy top 2:
> db.demo665.find({Value:{$lte:30}}).sort({Value:-1}).limit(2);Kết quả - 2 giá trị lớn nhất ≤ 30 là 25 và 20:
Toán tử range:
$gt- greater than (>)$gte- greater than or equal (>=)$lt- less than (<)$lte- less than or equal (<=)
Kết hợp: {Value: {$gte: 10, $lte: 30}} = từ 10 đến 30 (bao gồm cả 2 đầu). Tạo index trên Value: db.demo665.createIndex({Value: 1}) để tối ưu range query.