Не се нуждаете от това опаковане. Датата си е дата :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
Разбира се, ако тези „дати“ във вашия документ всъщност са „низове“, а не правилна дата типове, тогава това е ваш проблем. И това, което висистина трябва да коригирате тези стойности, така че да са реални дати.
Това важи за всички езикова реализация, където трябва да работите с родния тип "дата" и да оставите драйвера да направи преобразуването вместо вас.
Как да определите дали полето е низ
Е, ясната разлика е, че когато погледнете документ в mongo shell, ако това е истински BSON тип дата, тогава ще изглежда така:
"start": ISODate("2014-03-31T08:47:48.946Z"),
Ако това не е достатъчно ясно, тогава има $type
оператор, който можете да използвате в заявка като тази:
db.collection.find({ "start": { "$type": 2 } }).count()
Също така не се MongoDB, който прави това, ако е низ, но по-скоро лошо внедряване в приложението или импортирането, което е отговорно за създаването на това. За което се отнасяха всички точки, направени в първоначалния отговор.