Jeg er ikke sikker, men alt tyder på, at det er umuligt at bygge gyldig forespørgsel ved hjælp af streng JSON. Selvom du kan køre forespørgsel ved at kombinere $date med $gt , $gte , $lt , $lte det ser ud til, ligesom i dit tilfælde, altid at blive vurderet som false .
Når du kombinerer $date med $ne eller $nin det vil matche hvert dokument i samlingen, så jeg tror, det bekræfter tidligere observationer.
Hvad er vigtigere, når du prøver at få nøjagtig match som denne db.foo.find({at: {"$date":"2010-01-01T00:00:00Z"}}) du får en ugyldig operatørfejl (10068).
Mit gæt er, når du prøver at oprette et dokument i Mongo shell ved hjælp af $date
doc = {at: {"$date":"2010-01-01T00:00:00Z"}}
det vurderes ikke som dato, og der er ingen måde at indsætte et dokument som dette i samlingen. Som du kan se, ser det ud til, at streng JSON kun parses korrekt af værktøjer som mongoimport .Der er et lignende spørgsmål her:Er der en måde at køre MongoDB shell (eller tojson-metoden) i streng JSON-tilstand?