Även om $date
är en del av MongoDB Extended JSON och det är vad du får som standard med mongoexport
Jag tror inte att du riktigt kan använda det som en del av frågan.
Om försök exakt söka med $date
som nedan:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
du får felmeddelande:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Prova detta:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
eller (efter kommentarer av @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
kan också krävas för att jämföra datum utan tid (noterat av @MattMolnar).
Enligt datatyper i mongo Shell ska båda vara likvärdiga:
Mongoskalet tillhandahåller olika metoder för att returnera datumet, antingen som en sträng eller som ett Date-objekt:
- Date()-metod som returnerar det aktuella datumet som en sträng.
- ny Date()-konstruktor som returnerar ett Date-objekt med ISODate()-omslaget.
- ISODate()-konstruktor som returnerar ett Date-objekt med ISODate()-omslaget.
och använda ISODate
bör fortfarande returnera ett Date-objekt.
{"$date": "ISO-8601 string"}
kan användas när strikt JSON-representation krävs. Ett möjligt exempel är Hadoop-kontakt.