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