Anda tidak membutuhkan pembungkus ini. Tanggal adalah tanggal :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
Sekarang tentu saja jika "tanggal" dalam dokumen Anda sebenarnya adalah "string" dan bukan tanggal yang tepat jenis maka itu adalah masalah Anda. Dan apa yang Anda sebenarnya yang perlu dilakukan adalah memperbaiki nilai-nilai tersebut sehingga merupakan tanggal yang sebenarnya.
Ini berlaku untuk apa saja implementasi bahasa, di mana Anda harus bekerja dengan jenis "tanggal" asli dan membiarkan pengemudi melakukan konversi untuk Anda.
Cara menentukan apakah bidang adalah string
Nah perbedaan yang jelas adalah ketika Anda melihat dokumen di mongo shell, jika itu adalah tipe tanggal BSON asli maka akan terlihat seperti ini:
"start": ISODate("2014-03-31T08:47:48.946Z"),
Jika itu tidak cukup jelas maka ada $type
operator yang dapat Anda gunakan dalam kueri seperti ini:
db.collection.find({ "start": { "$type": 2 } }).count()
Itu juga tidak MongoDB yang melakukan ini jika itu adalah string, tetapi implementasi yang buruk dalam aplikasi atau impor yang bertanggung jawab untuk membuat ini. Itulah poin yang dibuat dalam tanggapan awal.