Sebbene $date
fa parte di MongoDB Extended JSON ed è ciò che ottieni di default con mongoexport
Non penso che tu possa davvero usarlo come parte della query.
Se prova la ricerca esatta con $date
come di seguito:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
riceverai un errore:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Prova questo:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
oppure (in seguito ai commenti di @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
potrebbe anche essere richiesto di confrontare le date senza tempo (annotato da @MattMolnar).
Secondo i tipi di dati nella mongo Shell, entrambi dovrebbero essere equivalenti:
La shell mongo fornisce vari metodi per restituire la data, sia come stringa che come oggetto Date:
- Metodo Date() che restituisce la data corrente come stringa.
- nuovo costruttore Date() che restituisce un oggetto Date usando il wrapper ISODate().
- Costruttore ISODate() che restituisce un oggetto Date utilizzando il wrapper ISODate().
e utilizzando ISODate
dovrebbe comunque restituire un oggetto Date.
{"$date": "ISO-8601 string"}
può essere utilizzato quando è richiesta una rappresentazione JSON rigorosa. Un possibile esempio è il connettore Hadoop.