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: як робити запити за допомогою регулярного виразу «Подобається».
MongoDB: як перевірити, чи поле містить рядок