Esto funciona para mí:
> db.h.insert({x:15})
> db.h.createIndex({x:-1})
> db.h.find().min({x:20}).max({x:10})
{ "_id" : ObjectId("52fb6930253ac3dcf43b27f5"), "x" : 15 }
Su índice podría tener un problema con él.
La razón por la que esto funciona es porque el índice es al revés.
Imagina que le das la vuelta a una lista, lo que min y max dicen efectivamente es obtener un rango de esa lista con el mínimo de 10 y el máximo de 20. Sin embargo, ese rango ya no existe porque la lista está al revés. En su lugar, el rango debe invertirse para que coincida con la lista.