MongoDB, MapReduce y ordenando

Puede que esté un poco nervioso, ya que todavía estoy aprendiendo los entresijos de MongoDB, pero aquí va.

En este momento estoy trabajando en una herramienta para buscar / filtrar a través de un conjunto de datos, clasificarlo por un punto de datos arbitrario (por ejemplo, popularidad) y luego agruparlo por un ID. La única forma de ver que puedo hacer esto es a través de la funcionalidad MapReduce de Mongo.

No puedo usar .group () porque estoy trabajando con más de 10,000 teclas y también necesito poder ordenar el conjunto de datos.

El código de Mi MapReduce está funcionando bien, excepto por una cosa: la clasificación. La clasificación simplemente no quiere trabajar en absoluto.

db.runCommand({
  'mapreduce': 'products',
  'map': function() {
    emit({
      product_id: this.product_id,
      popularity: this.popularity
    }, 1);
  },
  'reduce': function(key, values) {
    var sum = 0;
    values.forEach(function(v) {
      sum += v;
    });

    return sum;  
  },
  'query': {category_id: 20},
  'out': {inline: 1},
  'sort': {popularity: -1}
});

Ya tengo un índice descendente en el punto de datos de popularidad, por lo que definitivamente no funciona debido a la falta de eso:

{ "v" : 1, "key" : { "popularity" : -1 }, "ns" : "app.products", "name" : "popularity_-1" }

Simplemente no puedo entender por qué no quiere ordenar.

En lugar de incluir el conjunto de resultados, no puedo enviarlo a otra colección y luego ejecutar un .find (). Sort ({popularidad: -1}) debido a la forma en que funcionará esta característica.