使用mapReduce选择一行中的所有字段



我使用猫鼬与nodejs。我使用mapReduce来获取按字段分组的数据。因此,作为一个集合,它给我的只是数据库中每一行具有分组字段的键。

我需要从数据库中获取由一个字段分组的所有字段,并在另一个字段的基础上进行排序。例如:我有一个数据库,有旅行到这些地方和其他一些领域的地方和票价的详细信息。现在我需要以这样一种方式获取数据,即我可以根据票价为他们排序的地方分组数据。MapReduce帮我得到了这个,但是我不能得到其他字段。

是否有一种方法可以使用map reduce获得所有字段,而不仅仅是获得上面示例中提到的两个字段??

我必须承认我不确定我完全明白你在问什么。但也许下面的想法对你有所帮助:

或者)当你迭代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;
}

相关内容

  • 没有找到相关文章

最新更新