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?