Deze verpakking heb je niet nodig. Een datum is een datum :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
Nu natuurlijk als die "datums" in uw document eigenlijk "strings" zijn en niet de juiste datum typen dan is dat jouw probleem. En wat je echt nodig is om deze waarden te corrigeren, zodat het echte datums zijn.
Dit is van toepassing op elke taalimplementatie, waarbij u met het oorspronkelijke "datum"-type zou moeten werken en het stuurprogramma de conversie voor u moet laten doen.
Hoe te bepalen of het veld een string is
Welnu, het duidelijke verschil is wanneer je naar een document in de mongo-shell kijkt, als het een echt BSON-datumtype is, ziet het er als volgt uit:
"start": ISODate("2014-03-31T08:47:48.946Z"),
Als dat niet duidelijk genoeg is, is er de $type
operator die u in een query als deze kunt gebruiken:
db.collection.find({ "start": { "$type": 2 } }).count()
Het is ook niet MongoDB die dit doet als het een string is, maar eerder een slechte implementatie in de applicatie of import die verantwoordelijk was voor het maken hiervan. Dat was waar de punten in de eerste reactie over gingen.