最近在学习mongodb碰到一个mapReduce的问题 请教下高手:
> db.user.find()
{ "_id" : 1, "username" : "kekeles", "age" : 123, "sex" :
{ "_id" : 2, "username" : "keke", "age" : 23, "sex" : 2 }
{ "_id" : 3, "username" : "les", "age" : 3, "sex" : 1 }
这是collection的结构
m=function(){emit(this.username,1);} map函数
r=function(k,val){return 1;} reduce函数 都是最简单的实验
res=db.user.mapReduce(m,r,{query:{sex:1}}); 在执行这行的时候就报出以下错误
Mon Mar 21 10:01:55 uncaught exception: map reduce failed:{
"assertion" : "'out' has to be a string or an object",
"assertionCode" : 13606,
"errmsg" : "db assertion failure",
"ok" : 0
}
我在做一些复杂点的试例的时候也同样碰到类似的问题
帮看下
r=function(k,val){return 1;} ==>r=function(k,val){return {k,1};}//试试看
out在新版貌似需要指定的
db.NoteCategories.mapReduce(function (){
emit(this.AccessLevel,this.NoteCount);
},function (key,values){
var total = 0;
for(var i in values){
total += values[i];
}
return total;
},{out: { inline : 1}});
之前在MongoDB萌阔论坛上看到过关于mapreduce的相关介绍以及代码示例,你可以去看看,希望能帮助到你。
萌阔论坛:http://forum.foxera.com/mongodb/topic/458/mongodb中的mapreduce简介?un=Jesse