Saya tidak yakin tetapi semuanya menunjukkan bahwa tidak mungkin membuat kueri yang valid menggunakan JSON yang ketat. Meskipun Anda dapat menjalankan kueri yang menggabungkan $date
dengan $gt
, $gte
, $lt
, $lte
sepertinya, seperti dalam kasus Anda, selalu dievaluasi sebagai false
.
Saat Anda menggabungkan $date
dengan $ne
atau $nin
itu akan cocok dengan setiap dokumen dalam koleksi jadi saya pikir itu mengkonfirmasi pengamatan sebelumnya.
Apa yang lebih penting ketika Anda mencoba mendapatkan kecocokan persis seperti ini db.foo.find({at: {"$date":"2010-01-01T00:00:00Z"}})
anda akan mendapatkan kesalahan operator yang tidak valid (10068).
Dugaan saya adalah Ketika mencoba membuat dokumen di shell Mongo menggunakan $date
doc = {at: {"$date":"2010-01-01T00:00:00Z"}}
itu tidak dievaluasi sebagai tanggal dan tidak ada cara untuk memasukkan dokumen seperti ini ke dalam koleksi. Seperti yang Anda lihat, tampaknya JSON yang ketat diuraikan dengan benar hanya dengan alat seperti mongoimport
.Ada pertanyaan serupa di sini:Apakah ada cara untuk menjalankan shell MongoDB (atau metode tojson) dalam mode JSON yang ketat?.