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

การคิวรีข้อมูลวันที่ในช่วงเวลาที่กำหนดใน MongoDB

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

ใน MongoBC ใช้ตัวดำเนินการเปรียบเทียบ $gt (มากกว่า) และ $lt (น้อยกว่า) ร่วมกับ ISODate เพื่อคิวรีเอกสารที่มีวันที่อยู่ในช่วงที่กำหนด

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

> db.demo60.insertOne({ "ArrivalDate": new ISODate("2019-01-11 12:30:10") });
> db.demo60.insertOne({ "ArrivalDate": new ISODate("2019-10-12 03:10:00") });
> db.demo60.insertOne({ "ArrivalDate": new ISODate("2019-01-14 05:11:20") });

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

> db.demo60.find();

ผลลัพธ์:

{ "_id": ObjectId("..."), "ArrivalDate": ISODate("2019-01-11T12:30:10Z") }
{ "_id": ObjectId("..."), "ArrivalDate": ISODate("2019-10-12T03:10:00Z") }
{ "_id": ObjectId("..."), "ArrivalDate": ISODate("2019-01-14T05:11:20Z") }

คำสั่งคิวรีวันที่ระหว่าง 2019-01-09 ถึง 2019-01-16

> db.demo60.find({
  "ArrivalDate": {
    "$gt": ISODate("2019-01-09T12:30:10Z"),
    "$lt": ISODate("2019-01-16T12:30:10Z")
  }
});

ผลลัพธ์ที่ได้ (เฉพาะวันที่ในเดือนมกราคม)

{ "_id": ObjectId("..."), "ArrivalDate": ISODate("2019-01-11T12:30:10Z") }
{ "_id": ObjectId("..."), "ArrivalDate": ISODate("2019-01-14T05:11:20Z") }

ตัวดำเนินการเปรียบเทียบวันที่ที่ใช้บ่อย

เคล็ดลับ

  • ใช้ ISODate() เพื่อให้แน่ใจว่ารูปแบบวันที่ถูกต้องและสอดคล้องกับ UTC
  • สร้างดัชนีบนฟิลด์วันที่ เพื่อให้คิวรีช่วงเวลาทำงานเร็วขึ้น
  • สามารถรวมเงื่อนไขอื่นๆ ได้ใน find() เดียวกัน
Operatorความหมาย
$gtมากกว่า (strictly greater than)
$gteมากกว่าหรือเท่ากับ
$ltน้อยกว่า (strictly less than)
$lteน้อยกว่าหรือเท่ากับ