案例:统计每个用户提交订单的订单编码(在这里我的集合名称是order_info)
- 1 、写映射(Map)函数,可以简单的理解成分组吧
var m=function(){
emit(this.cuserId,this.orderCode);
} 2、编写reduce函数
var r=function(key,values){
var ret={age:key,names:values};
return ret;
}3、运行
db.runCommand({
mapreduce:”t”,
map:m,
reduce:r,
out:”user_ordercode”
})4、查询最后结果
db.user_ordercode.find()实战代码:
var m=function(){
emit(this.cuserId,this.orderCode);
}
var r=function(key,values){
var ret={cuserId:key,orderCode:values};
return ret;
}
db.runCommand({
mapreduce:”order_info”,
map:m,
reduce:r,
out:”user_ordercode”
})
db.user_ordercode.find()有图为证:
注意:命令语法
db.runCommand(
{ mapreduce : 字符串,集合名,
map : 函数,见下文
reduce : 函数,见下文
query : 文档,发往map函数前先给过渡文档
sort : 文档,发往map函数前先给文档排序
limit : 整数,发往map函数的文档数量上限
out : 字符串,统计结果保存的集合
keeptemp: 布尔值,链接关闭时临时结果集合是否保存
finalize : 函数,将reduce的结果送给这个函数,做最后的处理
scope : 文档,js代码中要用到的变量
jsMode : 布尔值,是否减少执行过程中BSON和JS的转换,默认true
verbose : 布尔值,是否产生更加详细的服务器日志,默认true
}
);
如有疑问请联系qq:1913284695