问题描述
- MongoDB中的mapReduce中reduce文件只作用在一个文档上
- 小白刚接触MongoDB,看到mapReduce这里不是很清楚,自己编了一段代码,想做个计数,然后发觉map方法出来的value如果只有一个元素的时候,好像不参与到reduce函数的计算中。
如:var map=function(){ emit(this.name{count:1})}var reduce=function(keyvalues){ var count=0; for(var i in values){ count+=values[i].count*2; } return {name:keyage:count}}db.student.mapReduce(mapreduce { out:""test"" }).find()
输出结果为:
{ _id"" : ""xly"" value"" : {name"" : ""xly"" age"" : NumberInt(4) }}{ _id"" : ""xxx"" value"" : {name"" : ""xxx"" age"" : NumberInt(4) }}{ _id"" : ""zzz"" value"" : {count"" : NumberInt(1) }}
其中name为zzz的数据只有1个。所以在reduce中把count乘以2,在zzz中没有体现。
有没有大神解释一下,是不是跟python的reduce函数一样要接收两个参数还是怎么回事,还有如果只有一个文档的时候怎么对里面的值进行操作?
解决方案
http://www.cnblogs.com/Joe-T/p/4264910.html
时间: 2024-08-30 17:35:16