mongo的mapReduce
准备用mongo的mapReduce统计网站的访问信息。
var query = {'time' : {'$gtr' : start, '$lt' : end}};
var map = function() {
emit({"agent" : this.agent, "link" : this.link}, {"ip" : [this.ip], "uid" : [this.id], "ir" : [this.ir]});
};
var reduce = function(k, v) {
var ip = [];
var uid = [];
var ir = [];
v.forEach(function(obj) {
Array.prototpye.push.apply(ip, v.ip);
Array.prototpye.push.apply(uid, v.uid);
Array.prototpye.push.apply(ir, v.ir);
});
return {"ip" : ip, "uid" : uid, "ir" : ir};
}
var finalize = function(k, v) {
var ips = v.ip.length;
var ipsu = Array.unique(v.ip).length;
var ids = v.id.length;
var idsu = Array.unique(v.id).length;
var irs = v.ir.length;
var irsu = Array.unique(v.ir).length;
return {"ips" : ips, "ipsu" : ipsu, "ids" : ids, "idsu" : idsu, "irs" : irs, "irsu" : irsu};
};
数据量稍微大点就会报错
"errmsg" : "exception: Converting from JavaScript to BSON failed: Object size 18337514 exceeds limit of 16793600 bytes.",
"code" : 17260,
"ok" : 0
看起来是reduce结果的数据元素太多导致超限,谁有办法解决这个问题?