Я хотел бы, чтобы данные MapReduce были в MongoDB.Данные выглядят следующим образом:
{
type: 'DOMcheck',
category: 'Bad label name',
url: 'http://s1.app.int/part/module/doc/2'
...
}
Теперь я хотел бы собрать все журналы и подсчитать uniqs по /part/module
части URL.Я создаю map
функцию:
function() {
var re = new RegExp(/^(http:\/\/[\w\.]*)(\/[\w]*\/[\w]*)/),
u = [];
u = this.url.match(re);
emit(u[2], 1);
}
и reduce
функцию:
function(key, val) {
var sum = 0;
for(var i in val) sum += val[i];
return sum;
}
и вызываю MapReduce: res = db.logs.mapReduce(m, r, {query: {type:"DOMcheck", category: /bad/i}})
Но у меня есть ошибка:
uncaught exception: map reduce failed: {
"assertion" : "map invoke failed: JS Error: TypeError: u has no properties nofile_b:3",
"assertionCode" : 9014,
"errmsg" : "db assertion failure",
"ok" : 0
}
Что здесь с функцией map
?Если я emit(this.url, 1)
карта работает просто отлично ...