Mongodb map уменьшить, чтобы получить uniques по дате/дню
пытается группировать по дате и номеру
мой документ
{ "_id" : ObjectId("4f956dee76ddb26752026e8f"), "request" : "default", "options" : "1", "keyword" : "somekey", "number" : "5b234b79-4d70-437e-8eef-32a2941af40a", "date" : "20120423200446", "time" : 1335193066 }
мой запрос
map = "function() { var date = new Date(this.time * 1000); var key = date.getFullYear() + date.getMonth() + date.getDate(); emit({day : key, number: this.number}, {count: 1}); }"
reduce = "function(key, values) { var count = 0; values.forEach(function(v) { count += v['count']; }); return {count: count}; }"
db.txtweb.mapReduce(map, reduce, {out: "pageview_results"});
моя ошибка
uncaught exception: map reduce failed:{ "errmsg" : "ns doesn't exist", "ok" : 0 }
Я не могу понять, что не так, но я думаю, что он что-то делает с функциональностью даты.
Любые идеи.
Ответы
Ответ 1
ns doesn't exist
означает, что вы обращаетесь к несуществующей базе данных или коллекции. Проверьте их имена
Script ниже группы this.am за день (без времени)
db.payments.mapReduce(
function() {
var k = new Date(this.payment_time);
k.setMinutes(0);
k.setSeconds(0);
k.setMilliseconds(0);
emit(k, this.amount);
},
function (key, vals) {
var total = 0;
for (var i = 0; i < vals.length; i++) {
total += vals[i];
}
return total;
},
{
out : {merge : "resultName" }
}
);
}
};
Ответ 2
Это происходит, главным образом, при запуске script и забыли выбрать базу данных
use your_database_name;
Обратите внимание на строку, чтобы выбрать базу данных.