Mongodb: วิธีค้นหาด้วยช่วงวันที่


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อสืบค้นด้วยช่วงวันที่ใน MongoDB:

 db.collection.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

แบบสอบถามนี้จะส่งคืนเอกสารทั้งหมดในคอลเลกชันที่มีฟิลด์ “วัน” มากกว่า 2020-01-21 และน้อยกว่า 2020-01-24

โปรดทราบว่า $gt หมายถึง “มากกว่า” และ $lt หมายถึง “น้อยกว่า”

คุณยังสามารถใช้ $gte สำหรับ “มากกว่าหรือเท่ากับ” และ $lte สำหรับ “น้อยกว่าหรือเท่ากับ”

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับ การขาย คอลเลกชันด้วยเอกสารต่อไปนี้:

 db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 })
db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 })
db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 })
db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 })
db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })

ตัวอย่างที่ 1: ค้นหาเอกสารระหว่างวันที่สองวัน

เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่ช่อง “วัน” อยู่ระหว่างวันที่ระบุสองวัน:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

แบบสอบถามนี้ส่งคืนเอกสารสองรายการต่อไปนี้:

 { _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

ตัวอย่างที่ 2: ค้นหาเอกสารหลังจากวันที่ระบุ

เราสามารถใช้รหัสต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่มีฟิลด์ “วัน” หลังวันที่ระบุ:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-22 ")
    }
})

แบบสอบถามนี้ส่งคืนเอกสารสองรายการต่อไปนี้:

 { _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

ตัวอย่างที่ 3: ค้นหาเอกสารก่อนวันที่ระบุ

เราสามารถใช้รหัสต่อไปนี้เพื่อค้นหาเอกสารทั้งหมดที่มีฟิลด์ “วัน” อยู่ก่อนวันที่ระบุ:

 db.sales.find({
    day: {
        $lt : ISODate(" 2020-01-22 ")
    }
})

แบบสอบถามนี้ส่งคืนเอกสารสองรายการต่อไปนี้:

 { _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน ISODate() ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการดำเนินการค้นหาทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีสืบค้นด้วยนิพจน์ทั่วไป “Like”
MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *