Вы можете использовать следующий базовый синтаксис для выполнения запроса с диапазоном дат в 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: как проверить, содержит ли поле строку