2012-05-01 2 views
0

Я пытаюсь запустить функцию 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 в правильном формате.

+1

mongoexport является очень простым инструментом, и не поддерживает вложенные поля еще. – Ren

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^