Bien que $date
fait partie de MongoDB Extended JSON et c'est ce que vous obtenez par défaut avec mongoexport
Je ne pense pas que vous puissiez vraiment l'utiliser dans le cadre de la requête.
Si essayez une recherche exacte avec $date
comme ci-dessous :
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
vous obtiendrez une erreur :
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Essayez ceci :
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
ou (suite aux commentaires de @user3805045) :
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
peut également être amené à comparer les dates sans l'heure (noté par @MattMolnar).
Selon les types de données dans le shell mongo, les deux doivent être équivalents :
Le shell mongo fournit différentes méthodes pour renvoyer la date, soit sous forme de chaîne, soit sous forme d'objet Date :
- Méthode Date() qui renvoie la date actuelle sous forme de chaîne.
- nouveau constructeur Date() qui renvoie un objet Date en utilisant le wrapper ISODate().
- Constructeur ISODate() qui renvoie un objet Date en utilisant le wrapper ISODate().
et en utilisant ISODate
doit toujours renvoyer un objet Date.
{"$date": "ISO-8601 string"}
peut être utilisé lorsqu'une représentation JSON stricte est requise. Un exemple possible est le connecteur Hadoop.