Heim > Datenbank > MySQL-Tutorial > mongoDB的mapreduce

mongoDB的mapreduce

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 16:03:25
Original
1163 Leute haben es durchsucht

mongoDB的map reduce使用 示例: res = db.runCommand({ mapreduce:liveEpgUserVisits, map:function() { emit({provice:this.provice}, {data:[{mac:this.mac}],visit:this.visitNum, userCount:0}); }, reduce:function(key, value) { var ret = {data:[]}

mongoDB的map reduce使用

示例:

res = db.runCommand({
mapreduce:'liveEpgUserVisits',
map:function() {
emit({provice:this.provice}, {"data":[{"mac":this.mac}],visit:this.visitNum, userCount:0});
},
reduce:function(key, value) {
var ret = {data:[]}, visit=0
var userCount=0;
var macs = {};
var sum = 0;
for(var i in value) {
var ia = value[i];
for(var j in ia.data) {
if(!macs[ia.data[j].mac]) {
macs[ia.data[j].mac] = true;
ret.data.push(ia.data[j]);

userCount += 1;

}
}

sum += Number(ia.visit);
}
ret.visit = sum;
ret.userCount = userCount;
return ret;
},
query:{"inputTime":{$gte:ISODate("2014-09-17T14:20:00Z"),$lte:ISODate("2014-09-17T14:30:00Z")}},
finalize:function(key, values){
return [{count:values.data.length},{visit:values.visit},{userCount:values.userCount}];
},
out:'tmp_mo_spcode_consignid_1',
verbose:true
}) 上面的示例, map:key是省份,value是这个省份对应的mac值、访问数量、用户数量。 reduce:获取到每个省份的value,然后进行运算,在将结果返回。通过finalize参数指定输出格式。如果不指定输出格式则会安装map的key和value格式进行输出。

其中db.runCommand包含以下参数:

db.runCommand(
 { mapreduce : <collection>,
   map : <mapfunction>,
   reduce : <reducefunction>
   [, query : <query filter object>]
   [, sort : <sort the query.  useful for optimization>]
   [, limit : <number of objects to return from collection>]
   [, out : <output-collection name>]
   [, keeptemp: <true|false>]
   [, finalize : <finalizefunction>]
   [, scope : <object where fields go into javascript global scope >]
   [, verbose : true]
 }
);
Nach dem Login kopieren
    - mapreduce:指定要进行mapreduce处理的collection
    - map:map函数    - reduce:reduce函数    - out:输出结果的collection的名字,不指定会默认创建一个随机名字的collection(如果使用了out选项,就不必指定keeptemp:true了,因为已经隐含在其中了)    - query:一个筛选条件,只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)    - sort:和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制    - limit:发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)    - keytemp:true或false,表明结果输出到的collection是否是临时的,如果想在连接关闭后仍然保留这个集合,就要指定keeptemp为true,如果你用的是MongoDB的mongo客户端连接,那必须exit后才会删除。如果是脚本执行,脚本退出或调用close会自动删除结果collection    - finalize:是函数,它会在执行完map、reduce后再对key和value进行一次计算并返回一个最终结果,这是处理过程的最后一步,所以finalize就是一个计算平均数,剪裁数组,清除多余信息的恰当时机    - scope:javascript代码中要用到的变量,在这里定义的变量在map,reduce,finalize函数中可见    - verbose:用于调试的详细输出选项,如果想看MpaReduce的运行过程,可以设置其为true。也可以print把map,reduce,finalize过程中的信息输出到服务器日志上。
Nach dem Login kopieren
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Parameterverständnis von Mongodb
Aus 1970-01-01 08:00:00
0
0
0
Verwendung von Symfony2 Mongodb
Aus 1970-01-01 08:00:00
0
0
0
mongodb _id umbenennen
Aus 1970-01-01 08:00:00
0
0
0
MongoDB schließt Verbindung – Stapelüberlauf
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage