Du behøver ikke noget af denne indpakning. En dato er en dato :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
Nu selvfølgelig, hvis disse "datoer" i dit dokument faktisk er "strenge" og ikke korrekt dato typer så er det dit problem. Og hvad du virkelig det er nødvendigt at rette disse værdier, så de er rigtige datoer.
Dette gælder for enhver sprogimplementering, hvor du skal arbejde med den oprindelige "dato"-type og lade driveren udføre konverteringen for dig.
Sådan afgøres, om feltet er en streng
Den klare forskel er, når du ser på et dokument i mongo-skallen, hvis det er en rigtig BSON-datotype, vil det se sådan ud:
"start": ISODate("2014-03-31T08:47:48.946Z"),
Hvis det ikke er tydeligt nok, er der $type
operator, som du kan bruge i en forespørgsel som denne:
db.collection.find({ "start": { "$type": 2 } }).count()
Det er det også ikke MongoDB, der gør dette, hvis det er en streng, men temmelig dårlig implementering i applikationen eller importen, der var ansvarlig for at oprette dette. Det var det, pointerne i det første svar handlede om.