No estoy seguro, pero todo sugiere que es imposible crear una consulta válida utilizando JSON estricto. Aunque puede ejecutar una consulta combinando $date
con $gt
, $gte
, $lt
, $lte
parece, como en su caso, ser siempre evaluado como false
.
Cuando combinas $date
con $ne
o $nin
coincidirá con todos los documentos de la colección, así que creo que confirma la observación anterior.
¿Qué es más importante cuando intenta obtener una coincidencia exacta como esta db.foo.find({at: {"$date":"2010-01-01T00:00:00Z"}})
obtendrá un error de operador no válido (10068).
Supongo que cuando intente crear un documento en el shell de Mongo usando $date
doc = {at: {"$date":"2010-01-01T00:00:00Z"}}
no se evalúa como fecha y no hay forma de insertar un documento como este en la colección. Como puede ver, parece que JSON estricto solo se analiza correctamente con herramientas como mongoimport
.Hay una pregunta similar aquí:¿Hay alguna forma de ejecutar MongoDB shell (o método tojson) en modo JSON estricto?.