MongoDB, MapReduce и сортировка

Я мог бы немного задуматься над этим, поскольку я все еще изучаю все тонкости MongoDB, но здесь все в порядке.

Прямо сейчас я работаю над инструментом для поиска / фильтрации по набору данных, сортировки по произвольному назначению данных (например, по популярности), а затем группировки по идентификатору. Единственный способ, которым я вижу, что я могу сделать это, это через функциональность Mongo MapReduce.

Я не могу использовать .group (), потому что я работаю с более чем 10000 ключами, и мне также нужно иметь возможность сортировать набор данных.

Мой код MapReduce работает просто отлично, за исключением одного: сортировка. Сортировка просто не хочет работать вообще.

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

У меня уже есть нисходящий индекс популярности данных, поэтому он определенно не работает из-за его отсутствия:

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

Я просто не могу понять, почему он не хочет сортировать.

Вместо вставки результирующего набора я не могу вывести его в другую коллекцию, а затем запустить .find (). Sort ({популярность: -1}) для этого из-за того, как эта функция будет работать.

Ответы на вопрос(2)

Ваш ответ на вопрос