Hoewel $date
is een onderdeel van MongoDB Extended JSON en dat krijg je standaard met mongoexport
Ik denk niet dat je het echt kunt gebruiken als onderdeel van de query.
Als u exact zoekt met $date
zoals hieronder:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
je krijgt een foutmelding:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Probeer dit:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
of (na opmerkingen van @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
kan ook nodig zijn om datums zonder tijd te vergelijken (opgemerkt door @MattMolnar).
Volgens gegevenstypen in de mongo Shell zouden beide equivalent moeten zijn:
De mongo-shell biedt verschillende methoden om de datum te retourneren, hetzij als een string of als een Date-object:
- Date() methode die de huidige datum als een string teruggeeft.
- nieuwe Date()-constructor die een Date-object retourneert met behulp van de ISODate()-wrapper.
- ISODate()-constructor die een Date-object retourneert met behulp van de ISODate()-wrapper.
en gebruik ISODate
moet nog steeds een Date-object retourneren.
{"$date": "ISO-8601 string"}
kan worden gebruikt wanneer strikte JSON-representatie vereist is. Een mogelijk voorbeeld is de Hadoop-connector.