Próbuję użyć MongoDB do analizy plików dziennika Apache. Utworzyłem kolekcję receipts
z dzienników dostępu Apache. Oto skrócona podsumowanie tego, co moi modele wyglądać następująco:W MongoDB mapreduce, w jaki sposób mogę spłaszczyć obiekt wartości?
db.receipts.findOne()
{
"_id" : ObjectId("4e57908c7a044a30dc03a888"),
"path" : "/videos/1/show_invisibles.m4v",
"issued_at" : ISODate("2011-04-08T00:00:00Z"),
"status" : "200"
}
Napisałem MapReduce function że grupy wszystkie dane przez pole issued_at
dat. Podsumowuje całkowitą liczbę żądań i zawiera zestawienie liczby żądań dla każdej unikalnej ścieżki. Oto przykład tego, co wyjście wygląda następująco:
db.daily_hits_by_path.findOne()
{
"_id" : ISODate("2011-04-08T00:00:00Z"),
"value" : {
"count" : 6,
"paths" : {
"/videos/1/show_invisibles.m4v" : {
"count" : 2
},
"/videos/1/show_invisibles.ogv" : {
"count" : 3
},
"/videos/6/buffers_listed_and_hidden.ogv" : {
"count" : 1
}
}
}
}
Jak mogę dokonać wygląd wyjściowy takiego Zamiast:
{
"_id" : ISODate("2011-04-08T00:00:00Z"),
"count" : 6,
"paths" : {
"/videos/1/show_invisibles.m4v" : {
"count" : 2
},
"/videos/1/show_invisibles.ogv" : {
"count" : 3
},
"/videos/6/buffers_listed_and_hidden.ogv" : {
"count" : 1
}
}
}
To jest właściwa odpowiedź, więc zagłosuj na tę sprawę, a następnie użyj http://stackoverflow.com/a/18124090/1402121 jako swojego rozwiązania – dmo