Ačkoli $date
je součástí MongoDB Extended JSON a to je to, co získáte jako výchozí s mongoexport
Nemyslím si, že to opravdu můžete použít jako součást dotazu.
Pokud zkuste přesné vyhledávání pomocí $date
jako níže:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
zobrazí se chyba:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Zkuste toto:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
nebo (po komentářích od @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
může být také požadováno porovnání dat bez času (poznamenal @MattMolnar).
Podle typů dat v mongo Shell by měly být oba ekvivalentní:
Shell mongo poskytuje různé metody pro vrácení data, buď jako řetězec nebo jako objekt Date:
- Metoda Date(), která vrací aktuální datum jako řetězec.
- nový konstruktor Date(), který vrací objekt Date pomocí obálky ISODate().
- Konstruktor ISODate(), který vrací objekt Date pomocí obálky ISODate().
a pomocí ISODate
by měl stále vracet objekt Date.
{"$date": "ISO-8601 string"}
lze použít, když je vyžadována přísná reprezentace JSON. Jedním z možných příkladů je konektor Hadoop.