相关疑难解决方法(0)

MongoDB,MapReduce和排序

我可能会对此有点了解,因为我还在学习MongoDB的细节,但是这里有.

现在我正在研究一种搜索/过滤数据集的工具,按任意数据点(例如流行度)对其进行排序,然后按ID进行分组.我认为我能做到这一点的唯一方法是通过Mongo的MapReduce功能.

我不能使用.group(),因为我正在使用超过10,000个键,我还需要能够对数据集进行排序.

我的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({popular:-1}),因为这个功能的工作方式.

mongodb mongodb-php mongodb-query

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

mongodb ×1

mongodb-php ×1

mongodb-query ×1