Tôi đang cố gắng sử dụng MongoDB để phân tích các tệp nhật ký Apache. Tôi đã tạo một bộ sưu tập receipts
từ nhật ký truy cập Apache. Dưới đây là một bản tóm tắt tóm lược về những gì mô hình của tôi trông giống như:Trong Mapouce MongoDB, làm thế nào tôi có thể làm phẳng đối tượng giá trị?
db.receipts.findOne()
{
"_id" : ObjectId("4e57908c7a044a30dc03a888"),
"path" : "/videos/1/show_invisibles.m4v",
"issued_at" : ISODate("2011-04-08T00:00:00Z"),
"status" : "200"
}
Tôi đã viết một MapReduce function rằng nhóm tất cả các dữ liệu bằng cách lĩnh vực issued_at
ngày. Nó tóm tắt tổng số yêu cầu và cung cấp phân tích về số lượng yêu cầu cho từng đường dẫn duy nhất. Dưới đây là một ví dụ về những gì đầu ra trông giống như:
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
}
}
}
}
Làm thế nào tôi có thể làm cho giao diện đầu ra như thế này thay vì:
{
"_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
}
}
}
Đây là câu trả lời đúng, vì vậy hãy bỏ phiếu cho trường hợp này và sau đó sử dụng http://stackoverflow.com/a/18124090/1402121 làm giải pháp của bạn – dmo