Въпреки че $date
е част от MongoDB Extended JSON и това е, което получавате по подразбиране с mongoexport
Не мисля, че наистина можете да го използвате като част от заявката.
Ако опитайте точно търсене с $date
като по-долу:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
ще получите грешка:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Опитайте това:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
или (след коментари от @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
може също да се изисква да се сравняват дати без време (отбелязано от @MattMolnar).
Според типовете данни в mongo Shell и двете трябва да са еквивалентни:
Черупката mongo предоставя различни методи за връщане на датата, или като низ, или като обект за дата:
- Метод Date(), който връща текущата дата като низ.
- нов конструктор Date(), който връща обект Date с помощта на обвивката ISODate().
- ISODate() конструктор, който връща обект Date с помощта на обвивката ISODate().
и с помощта на ISODate
все пак трябва да върне обект Date.
{"$date": "ISO-8601 string"}
може да се използва, когато се изисква строго JSON представяне. Един възможен пример е Hadoop конектор.