Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm kiếm theo khoảng giá trị (range) trong MongoDB

Để 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.