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: як перевірити, чи поле містить рядок

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *