Mongodb: как выполнить запрос с диапазоном дат


Вы можете использовать следующий базовый синтаксис для запроса диапазона дат в MongoDB:

 db.collection.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

Этот конкретный запрос вернет все документы в коллекции, поле «день» которых больше 21 января 2020 г. и меньше 24 января 2020 г.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *