MongoDB, MapReduce e classificação

Eu posso estar um pouco além disso, já que ainda estou aprendendo os detalhes do MongoDB, mas aqui vai.

No momento, estou trabalhando em uma ferramenta para pesquisar / filtrar um conjunto de dados, classificá-lo por um ponto de dados arbitrário (por exemplo, popularidade) e agrupá-lo por um id. A única maneira que vejo que posso fazer isso é através da funcionalidade MapReduce do Mongo.

Não consigo usar .group () porque estou trabalhando com mais de 10.000 chaves e também preciso poder classificar o conjunto de dados.

Meu código MapReduce está funcionando bem, exceto por uma coisa: a classificação. Ordenar simplesmente não quer funcionar de todo.

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}
});

Eu já tenho um índice descendente no datapoint de popularidade, então definitivamente não está funcionando por falta disso:

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

Eu simplesmente não consigo entender porque não quer classificar.

Em vez de inlining o conjunto de resultados, não posso enviá-lo para outra coleção e, em seguida, executar um .find (). Sort ({popularidade: -1}) sobre isso por causa da maneira como esse recurso está indo para o trabalho.

questionAnswers(2)

yourAnswerToTheQuestion