quarta-feira, 24 de julho de 2013

     Hoje me deparei com um problema: como consultar documentos contidos em um determinado intervalo de tempo no MongoDB?

     Encontrei uma solução simples. Vamos lá!

     Primeiro determinamos as datas inicias e finais. Podemos fazer isto de 2 maneiras, com as seguintes sintaxes:

data = new Date(ano, mês, dia)
data = ISODate('ano-mês-diaThora:minuto:segundosZ')

a segunda forma é interessante se desejar ter o controle de horário.


     Perceba também que quando usamos new Date(), o construtor é indexado em 0. Então, no caso, julho é representado por 6. Não temos esta questão quando usamos ISODate().

     Assim, definidas as datas inicial e final, executamos a seguinte query para obter os documentos em um determinado intervalo de tempo:

db.collection.find({chave:{$gte: data_inicial, $lt: data_final}})

     Nesta query utilizamos os operadores $gte (greater-than) e $lt (less-than), que serão abordados com mais detalhes nos próximos posts.

     Até lá!

3 comentários:

  1. Excelente este post!

    Sempre tive dúvidas quanto ao formato das datas no MongoDB e terei que usar isso em breve!

    Muito obrigado pela explicação!

    ResponderExcluir
    Respostas
    1. Obrigado Danilo!
      Estamos abertos a novas sugestões de posts também.

      Abraço,

      Leandro

      Excluir
  2. Onde está a parte 2 ... obrigado. Ótimo post.

    ResponderExcluir