Я пытаюсь запустить функцию map/reduce
в mongodb
, где я группирую 3 разных поля, содержащихся в объектах моей коллекции. Я могу запустить функцию map/reduce, но все испущенные поля выполняются вместе в выходной коллекции. Я не уверен, что это нормально или нет, но вывод данных для анализа требует больше усилий для очистки. Есть ли способ их разделить, затем используйте mongoexport
?Mongodb Map/Reduce - Несколько групп
Позвольте мне показать вам, что я имею в виду:
поля Я пытаюсь группе являются день, идентификатор пользователя (или UID) и назначения.
Я бегу эти функции:
map = function() {
day = (this.created_at.getFullYear() + "-" + (this.created_at.getMonth()+1) + "-" + this.created_at.getDate());
emit({day: day, uid: this.uid, destination: this.destination}, {count:1});
}
/* Reduce Function */
reduce = function(key, values) {
var count = 0;
values.forEach(function(v) {
count += v['count'];
}
);
return {count: count};
}
/* Output Function */
db.events.mapReduce(map, reduce, {query: {destination: {$ne:null}}, out: "TMP"});
Результат выглядит следующим образом:
{ "_id" : { "day" : "2012-4-9", "uid" : "1234456", "destination" : "Home" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "2345678", "destination" : "Home" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "3456789", "destination" : "Login" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "4567890", "destination" : "Contact" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "5678901", "destination" : "Help" }, "value" : { "count" : 1 } }
При попытке использовать mongoexport
, я не могу отдельный день, UID, или назначения по столбцам, так как карта объединяет поля вместе.
То, что я хотел бы иметь будет выглядеть следующим образом:
{ { "day" : "2012-4-9" }, { "uid" : "1234456" }, { "destination" : "Home"}, { "count" : 1 } }
даже возможно ли это?
В стороне - я смог сделать выходную работу, применив sed
к файлу и очистив CSV. Больше работы, но это сработало. Было бы идеально, если бы я мог получить его из mongodb
в правильном формате.
mongoexport является очень простым инструментом, и не поддерживает вложенные поля еще. – Ren