Mongodb: como consultar com um intervalo de datas


Você pode usar a seguinte sintaxe básica para consultar um intervalo de datas no MongoDB:

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

Esta consulta específica retornará todos os documentos da coleção cujo campo “dia” seja maior que 21/01/2020 e menor que 24/01/2020.

Observe que $gt indica “maior que” e $lt indica “menor que”.

Você também pode usar $gte para “maior ou igual” e $lte para “menor ou igual”.

Os exemplos a seguir mostram como utilizar esta sintaxe na prática com uma venda de coleção com os seguintes documentos:

 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 })

Exemplo 1: Pesquisa de documentos entre duas datas

Podemos usar o seguinte código para encontrar todos os documentos onde o campo “dia” está entre duas datas específicas:

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

Esta consulta retorna os dois documentos a seguir:

 { _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

Exemplo 2: Pesquisa de documentos posteriores a uma data específica

Podemos usar o seguinte código para encontrar todos os documentos cujo campo “dia” seja posterior a uma data específica:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-22 ")
    }
})

Esta consulta retorna os dois documentos a seguir:

 { _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

Exemplo 3: Pesquise documentos anteriores a uma data específica

Podemos usar o seguinte código para encontrar todos os documentos cujo campo “dia” seja anterior a uma data específica:

 db.sales.find({
    day: {
        $lt : ISODate(" 2020-01-22 ")
    }
})

Esta consulta retorna os dois documentos a seguir:

 { _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

Nota : Você pode encontrar a documentação completa da função ISODate() aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras consultas comuns no MongoDB:

MongoDB: Como consultar com uma expressão regular “Like”
MongoDB: Como verificar se o campo contém uma string

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *