使用mapReduce选择连续的所有字段

时间:2011-07-28 18:43:21

标签: mongodb node.js mapreduce grouping mongoose

我正在使用与nodejs的mongoose。我正在使用mapReduce来获取按字段分组的数据。所以它作为一个集合给我的关键是只有数据库每一行的分组字段的关键。

我需要从按字段分组的数据库中获取所有字段,并根据另一个字段进行排序。我有一个数据库,其中包含到这些地方旅行的地点和票价的详细信息以及其他一些字段。现在我需要以这样一种方式获取数据,即我根据按票价排序的地点对数据进行分组。 MapReduce帮助我实现了这个目标,但我无法获得其他领域。

有没有办法使用map reduce来获取所有字段,而不是仅仅获取上面示例中提到的两个字段?

1 个答案:

答案 0 :(得分:0)

我必须承认,我不确定我完全理解你的要求。 但也许以下一种想法可以帮助您:

)当您迭代mapReduce结果时,您可以从mongodb获取每个结果的完整文档。这样,您就可以访问每个文档中的所有字段,以获取某些网络流量的费用。

)您发送到emit(key,value)的值可以是对象。因此,您可以构造一个包含所有所需字段的值对象。请务必使用与reduce方法的返回值完全相同的对象结构。

我尝试用(未经测试的)示例进行说明。

map = function() {
   emit(this.place, 
        {
           'field1': this.field1, 
           'field2': this.field2, 
           'count' : 1 
        });
}

reduce = function(key, values) {
   var result = { 
       'field1': values[0].field1, 
       'field2': values[0].field2, 
       'count' : 0 };

   for (v in values) {
       result.count += values[v].count;
   }

   return obj;
}