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

ค้นหาช่วงค่า (Range Query) ใน MongoDB ด้วย Sort และ Limit

การค้นหาข้อมูลในช่วงค่า (range) และจัดเรียง ใช้ $lte/$gte ร่วม sort() และ limit()

> 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") }

แสดงข้อมูล:

> db.demo665.find();

คิวรีหาค่า <= 30 เรียงมากไปน้อย เอา 2 อันดับบน

> db.demo665.find({Value: {$lte: 30}}).sort({Value: -1}).limit(2);

ผลลัพธ์ - ได้ 25 และ 20 (ค่าที่ <= 30 สูงสุด 2 อันดับ):


Range Operators

รูปแบบ Range Query ทั่วไป

// ระหว่าง 10-50
{Value: {$gte: 10, $lte: 50}}

// มากกว่า 100
{Value: {$gt: 100}}

// น้อยกว่า 5 (ไม่รวม 5)
{Value: {$lt: 5}}

// รวมค่าที่ขาดหาย (null) ด้วย
{Value: {$lte: 30, $exists: true}}

Performance Tip

สร้าง Index บนฟิลด์ที่ range query บ่อย: db.demo665.createIndex({Value: 1})

OperatorความหมายSQL
$gtGreater than (>)>
$gteGreater than or equal (>=)>=
$ltLess than (<)<
$lteLess than or equal (<=)<=