Žádný z těchto obalů nepotřebujete. Datum je datum :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
Nyní samozřejmě, pokud tato „data“ ve vašem dokumentu jsou ve skutečnosti „řetězce“ a nikoli správné datum typů, pak je to váš problém. A co skutečně je potřeba tyto hodnoty opravit, aby to byla skutečná data.
To platí pro jakékoli jazyková implementace, kde byste měli pracovat s nativním typem „datum“ a nechat ovladač, aby provedl konverzi za vás.
Jak určit, zda je pole řetězec
Jasný rozdíl je, když se podíváte na dokument v mongo shellu, pokud se jedná o skutečný typ data BSON, bude to vypadat takto:
"start": ISODate("2014-03-31T08:47:48.946Z"),
Pokud to není dostatečně jasné, existuje $type
operátor, který můžete použít v dotazu, jako je tento:
db.collection.find({ "start": { "$type": 2 } }).count()
Také není MongoDB to dělá, pokud se jedná o řetězec, ale spíše špatná implementace v aplikaci nebo importu, který byl zodpovědný za vytvoření tohoto. O čem byly body uvedené v úvodní odpovědi.