首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapReduce、MongoDB和node-mongodb-native

MapReduce、MongoDB和node-mongodb-native
EN

Stack Overflow用户
提问于 2013-07-15 06:54:39
回答 1查看 4.6K关注 0票数 3

我正在使用node- MongoDB本地库在MongoDB上运行一个MapReduce (来自node.js)。

下面是我的代码:

代码语言:javascript
复制
var map = function() {
        emit(this._id, {'count': this.count});
    };
var reduce = function(key, values) {
        return {'testing':1};
    };
collection.mapReduce(
    map,
    reduce,
    {
        query:{ '_id': /s.*/g },
        sort: {'count': -1},
        limit: 10,
        jsMode: true,
        verbose: false,
        out: { inline: 1 }
    },
    function(err, results) {
        logger.log(results);
    }
);

两个问题:

1)基本上,我的reduce函数被忽略。无论我在其中放入什么,输出都只是我的map函数的结果(在本例中没有‘测试’)。有什么想法吗?

2)除非在用于排序的字段(在本例中是count字段)上定义了索引,否则我会得到一个错误。我知道这是意料之中的。它的效率似乎很低,因为正确的索引肯定是( _id,计数)而不是(计数),因为理论上应该首先使用_id(用于查询),然后才应该对适用的结果应用排序。我是不是漏掉了什么?MongoDB是不是很低效?这是一个bug吗?

谢谢!:)

EN

回答 1

Stack Overflow用户

发布于 2013-08-13 19:17:02

reduce函数从不被调用的原因是您为每个键发出了一个值,因此reduce函数没有实际执行的理由。以下是如何触发reduce函数的示例

代码语言:javascript
复制
collection.insert([{group: 1, price:41}, {group: 1, price:22}, {group: 2, price:12}], {w:1}, function(err, r) {

// String functions
var map = function() {
        emit(this.group, this.price);
    };

var reduce = function(key, values) {
        return Array.sum(values);
    };

collection.mapReduce(
    map,
    reduce,
    {
        query:{},
        // sort: {'count': -1},
        // limit: 10,
        // jsMode: true,
        // verbose: false,
        out: { inline: 1 }
    },
    function(err, results) {
      console.log("----------- 0")
      console.dir(err)
      console.dir(results)
        // logger.log(results);
    }
);

注意,我们是通过“>=”键发出的,这意味着有n个组0条目通过"group“键进行分组。因为您发出的是_id,所以每个键都是惟一的,因此不需要reduce函数。

http://docs.mongodb.org/manual/reference/command/mapReduce/#requirements-for-the-reduce-function

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17644600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档