Parece que no puedo obtener ni siquiera la consulta de fecha más básica para trabajar en MongoDB. Con un documento que se parece a esto:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Y una consulta que se ve así:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Obtengo 0 resultados de la ejecución:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
¿Alguna idea de por qué esto no funciona?
Como referencia, esta consulta está siendo producida por Spring's MongoTemplate, por lo que no tengo control directo sobre la consulta que finalmente se envía a MongoDB.
(PD)
> db.version()
2.4.7
¡Gracias!
Query
objeto en Spring. La forma serializada de la consulta no es necesariamente una consulta válida que solo puede copiar / pegar en un shell de mongo, lo que en sí mismo es algo frustrante. El culpable está aquí: grepcode.com/file/repo1.maven.org/maven2/org.mongodb/…new Date('2016-03-09')
aISODate('2016-03-09')
. El primero devolvería fechas en el pasado para una$gte
consulta.De los comentarios de la página del libro de cocina MongoDB :
Esto funcionó para mí. En un contexto completo, el siguiente comando obtiene todos los registros donde el
dt
campo de fecha tiene una fecha en 2013-10-01 (AAAA-MM-DD) Zulu:fuente
datetime.datetime
es equivalente aISODate
.Prueba esto:
fuente
Estoy usando robomongo como la interfaz de usuario del cliente mongodb y lo siguiente funcionó para mí
En el lado de la aplicación, estoy usando el controlador mongodb basado en nodejs (v1.4.3), la aplicación usa datepicker en la interfaz de usuario que da una fecha como AAAA-mm-dd, esto se agrega con un tiempo predeterminado como 00:00:00 y luego se da para el
new Date()
constructor y luego suministrado al objeto de criterios mongodb, creo que el controlador convierte la fecha a la fecha ISO y la consulta funciona y proporciona el resultado deseado, sin embargo, el mismonew Date()
constructor no funciona o muestra la misma salida en robo mongo, para el mismo criterio, lo cual es extraño, ya que usé robomongo para verificar mis objetos de criterio.Mientras que el cli mongoshell predeterminado funciona bien con ambos
ISODate
ynew Date()
fuente
En el modo estricto json, deberá mantener el orden:
Lo único que funcionó para definir mis consultas de búsqueda en mlab.com.
fuente
En el shell MongoDB:
En mi código nodeJS (usando Mongoose)
Estoy consultando mi colección de eventos del sensor para devolver valores donde el campo 'desde' es mayor que la fecha dada
fuente
este es mi documento
ahora quiero encontrar cada documento de fecha 27, así que usé esto ...
Esto funcionó para mí.
fuente
Esto funcionó para mí mientras buscaba un valor menor o igual que ahora:
fuente
Envuélvelo con
new Date()
:fuente
Antigua pregunta, pero aún así es el primer hit de Google, así que lo publico aquí, así que lo encuentro de nuevo más fácilmente ...
Usando Mongo 4.2 y un agregado ():
Este le da la variable groupby como una fecha, a veces mejor para manejar como los componentes en sí.
fuente