Aunque $date
es parte de MongoDB Extended JSON y eso es lo que obtienes por defecto con mongoexport
No creo que realmente puedas usarlo como parte de la consulta.
Si prueba la búsqueda exacta con $date
como a continuación:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
obtendrá un error:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Prueba esto:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
o (siguiendo los comentarios de @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
también puede ser necesario comparar fechas sin tiempo (señalado por @MattMolnar).
De acuerdo con los tipos de datos en mongo Shell, ambos deberían ser equivalentes:
El shell de mongo proporciona varios métodos para devolver la fecha, ya sea como una cadena o como un objeto de fecha:
- Método Date() que devuelve la fecha actual como una cadena.
- nuevo constructor Date() que devuelve un objeto Date utilizando el envoltorio ISODate().
- Constructor ISODate() que devuelve un objeto Fecha utilizando el envoltorio ISODate().
y usando ISODate
aún debería devolver un objeto Fecha.
{"$date": "ISO-8601 string"}
se puede usar cuando se requiere una representación JSON estricta. Un posible ejemplo es el conector Hadoop.