Selvom $date
er en del af MongoDB Extended JSON, og det er det, du får som standard med mongoexport
Jeg tror ikke, du rigtig kan bruge det som en del af forespørgslen.
Hvis prøv eksakt søgning med $date
som nedenfor:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
du får fejlmeddelelsen:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Prøv dette:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
eller (efter kommentarer af @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
kan også være nødvendigt at sammenligne datoer uden tid (noteret af @MattMolnar).
Ifølge datatyper i mongoen skal Shell begge være ækvivalente:
Mongo-skallen giver forskellige metoder til at returnere datoen, enten som en streng eller som et Dato-objekt:
- Date() metode, som returnerer den aktuelle dato som en streng.
- ny Date()-konstruktør, som returnerer et Date-objekt ved hjælp af ISODate()-indpakningen.
- ISODate()-konstruktør, som returnerer et Date-objekt ved hjælp af ISODate()-indpakningen.
og ved at bruge ISODate
skal stadig returnere et Dato-objekt.
{"$date": "ISO-8601 string"}
kan bruges, når streng JSON-repræsentation er påkrævet. Et muligt eksempel er Hadoop-stik.