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: как проверить, содержит ли поле строку

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.