所以我对mongodb和mapreduce基本上是新手,遇到了这个"怪癖"(至少在我看来是怪癖)

假设我的Collection 中有这样的物品:

{'key':5'value':5}

{'key':5'value':4}

{'key':5'value':1}

{'key':4'value':6}

{'key':4'value':4}

{'key':3'value':0}

我的map函数只发出键和值

我的reduce函数只是在返回值AND加1之前将其相加(我这样做是为了判断reduce函数是否被调用)

我的结果如下:

{u id:3'value': 0}

{u id:4,‘value:11.0}

{u id:5,‘value:11.0}

如您所见,对于键4&5我得到了预期的答案11,但对于键3(在集合中只有一个带有该键的条目),我得到了意外的0!

这是mapreduce的自然行为吗?为了MongoDB?对于pymongo(我正在使用)?

推荐答案

reduce函数将具有相同密钥的文档合并到一个文档中.如果map函数为特定键发出单个文档(如键3),则不会调用reduce函数.

Mongodb相关问答推荐

在一个视图中连接两个集合MongoDB;展开有什么作用?

没有文档的MongoDB集合中的不一致,但当我执行count()时,它告诉我有15个文档

如何根据两个 struct 创建一个Mongo文档?

DTO 验证适用于 POST,但不适用于 PUT

Mongo,通过 Lookup 计算多个文档中数组中的项目

分页时根据唯一字段mongodb获取数据

mongoDB 过滤、排序和排名结果

如何根据_id删除文档?

如何在 mongodb 中设置整数的默认值?

使用 EventSourcing(NodeJS、MongoDB、JSON)跨多个偶尔连接的客户端同步数据

获取收集字节使用情况统计信息的pymongo方法?

mongodb 中的 --bindip 配置选项有什么作用?

如何在 Ruby on Rails 环境中使用 Mongoid 进行通配符搜索?

如何在我的Meteor 应用程序数据库中使用 mongoimport?

Mongoose 不创建新集合

MongoDB 范围查询中 $lt 和 $gt 的顺序

如何为 node.js 中的 MongoDB 索引指定 javascript 对象中的属性顺序?

无法使用命令写入模式错误,降级到兼容模式

MongoDB 和 Robomongo: Can't connect (authentication)

MongoError:Can't extract geo keys from object