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

标签 mongodb node.js mapreduce grouping mongoose

我在 nodejs 中使用 mongoose。我正在使用 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;
}

关于mongodb - 使用 mapReduce 选择一行中的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864048/

相关文章:

hadoop - 使用Map Reduce生成序列号

ruby-on-rails - ruby on rails 和 mongo

javascript - 获取 "message":"Admin validation failed" Mongoose 、node.js 中的错误

node.js - mongodb 无法连接到服务器 [127.0.0.1 :27017] on first connect

node.js - Node redis将数据传递给回调

javascript - 使用未定义的数据库列中的快速结果将 html 形式的数据发送到 mysql 数据库

node.js - Mongoose:如何实现分页?

node.js - NodeJS 访问 token 与刷新 token

scala - Spark/Scala 拆分

hadoop - Hadoop编程世界中的关键字上下文是什么?