Parece que não consigo obter nem a consulta de data mais básica para trabalhar no MongoDB. Com um documento que se parece com isso:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
E uma consulta que se parece com isso:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Eu recebo 0 resultados da execução:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Alguma idéia de por que isso não funciona?
Para referência, essa consulta está sendo produzida pelo MongoTemplate do Spring, portanto, não tenho controle direto sobre a consulta que é finalmente enviada ao MongoDB.
(PS)
> db.version()
2.4.7
Obrigado!
Query
objeto no Spring. A forma serializada da consulta não é necessariamente uma consulta válida que você pode simplesmente copiar / colar em um shell mongo, o que por si só é meio frustrante. O culpado é aqui: grepcode.com/file/repo1.maven.org/maven2/org.mongodb/...new Date('2016-03-09')
paraISODate('2016-03-09')
. O primeiro retornaria datas no passado para uma$gte
consulta.Nos comentários da página do livro de receitas do MongoDB :
Isso funcionou para mim. No contexto completo, o comando a seguir obtém todos os registros em que o
dt
campo date possui uma data no Zulu 2013-10-01 (AAAA-MM-DD):fonte
datetime.datetime
é equivalente aISODate
.Tente o seguinte:
fonte
Estou usando o robomongo como o GUI do cliente mongodb e o abaixo funcionou para mim
No lado do aplicativo, estou usando o driver mongodb baseado em nodejs (v1.4.3), o aplicativo usa o datepicker na interface do usuário que fornece uma data como AAAA-mm-dd, que é anexada ao horário padrão como 00:00:00 e depois para o
new Date()
construtor e, em seguida, fornecido ao objeto de critério mongodb, acho que o driver converte a data em data ISO e a consulta funciona e fornece a saída desejada, porém a mesmanew Date()
construtor não funciona ou mostra a mesma saída no robo mongo, pela mesma critérios, o que é estranho, já que eu usei o robomongo para cruzar meus objetos de critérios.Enquanto o cli mongoshell padrão funciona bem com ambos
ISODate
enew Date()
fonte
No modo estrito json, você terá que manter a ordem:
A única coisa que funcionou para definir minhas consultas de pesquisa no mlab.com.
fonte
No shell do MongoDB:
No meu código nodeJS (usando Mongoose)
Estou consultando minha coleção de eventos do sensor para retornar valores em que o campo 'de' é maior que a data especificada
fonte
este é o meu documento
Agora eu quero encontrar todos os documentos data 27.so eu usei isso ....
isso funcionou para mim.
fonte
Isso funcionou para mim enquanto procurava um valor menor ou igual ao agora:
fonte
Envolva-o com
new Date()
:fonte
Pergunta antiga, mas ainda o primeiro hit do Google, por isso eu o publico aqui, para encontrá-lo mais facilmente ...
Usando o Mongo 4.2 e um agregado ():
Este fornece a variável groupby como uma data, às vezes é melhor manipular os componentes em si.
fonte