python - 整数作为 Mongodb 中 MapReduce 的键

标签 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);
};

减少:

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

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

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

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

不能输入整数值吗?我阅读了 Mongodb 上的 map 缩减文档,但找不到与键的数据类型相关的信息。

最佳答案

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

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

这似乎就是您想要做的。我不确定是不是。确保您运行的是最新的数据库版本等。

关于python - 整数作为 Mongodb 中 MapReduce 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10086233/

相关文章:

python - 对象没有属性 'btn'

python - Google 数据存储 ndb.AND 与 and

mongodb - mongodump 与 mongoexport : which is better?

ruby-on-rails - Rails + Mongoid - 不要在 JSON 中返回 nil 值

java - 在 spring-data-mongoDB 中创建 MongoTransactionManager bean 时出错

将网络字节列表(big-endian)字节顺序存储到文件(little-endian)的Python方法

python - Shogun Toolbox 在 Snow Leopard 上安装失败 - liblapack 问题?

python - python中的事件列表数据结构

mongodb - Mongoose 填充选项限制,如何限制子文件的数量?

MongoDb 查询 : checking if a string contains field value