Meskipun $date
adalah bagian dari MongoDB Extended JSON dan itulah yang Anda dapatkan sebagai default dengan mongoexport
Saya tidak berpikir Anda benar-benar dapat menggunakannya sebagai bagian dari kueri.
Jika mencoba pencarian yang tepat dengan $date
seperti di bawah ini:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
Anda akan mendapatkan kesalahan:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Coba ini:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
atau (mengikuti komentar oleh @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
mungkin juga diperlukan untuk membandingkan tanggal tanpa waktu (dicatat oleh @MattMolnar).
Menurut Tipe Data di mongo Shell keduanya harus setara:
Shell mongo menyediakan berbagai metode untuk mengembalikan tanggal, baik sebagai string atau sebagai objek Tanggal:
- Metode Date() yang mengembalikan tanggal saat ini sebagai string.
- konstruktor Date() baru yang mengembalikan objek Date menggunakan pembungkus ISODate().
- Konstruktor ISODate() yang mengembalikan objek Date menggunakan pembungkus ISODate().
dan menggunakan ISODate
harus tetap mengembalikan objek Date.
{"$date": "ISO-8601 string"}
dapat digunakan ketika representasi JSON yang ketat diperlukan. Salah satu contoh yang mungkin adalah konektor Hadoop.