整数作为Mongodb中Map Reduce的关键

时间:2012-04-10 09:32:42

标签: python mongodb

我在Mongodb中有一个如下所示的集合:

{_id: {"thread": "abc"}, "value": 1}
{_id: {"thread": "cdf"}, "value": 1}
{_id: {"thread": "edf"}, "value": 1}

我尝试映射reduce尝试键入值,希望输出如下:

{id_: {"value": 1}, value: 3}

MAP:

function() {
var key = {value : this.value};
emit(key, 1);
};

REDUCE:

function(key, values) {
var sum = 0;
values.forEach(function(value) {
sum += value;});
return sum;
};

编辑原始问题:地图Reduce不起作用不再有效。这是一个连接问题,而不是Map Reduce。感谢大家提供的额外信息。

不幸的是,这不起作用,并给出了一些输出如下:

{u'_id': {u'value': None}, u'value': 1160856.0}

是不是可以键入整数值?我在Mongodb上阅读了map reduce文档,但找不到与key数据类型相关的信息。

1 个答案:

答案 0 :(得分:3)

如果您正在运行MongoDB shell中的map / reduce,那么您可能会遇到一个功能/问题(意见各不相同;))其中shell将所有整数类型转换为double并将其存储为原样。除了从shell以外的东西调用你的m / r之外,目前还没有真正的解决方法。也就是说,如果我运行你的m / r我得到这个:

{
        "_id" : {
                "value" : 1
        },
        "value" : 3
}

这似乎是你想要做的。我不确定是不是。确保您运行的是最新的db版本等。

相关问题