Sto cercando di utilizzare MongoDB per analizzare i file di registro di Apache. Ho creato una collezione receipts
dai log di accesso di Apache. Ecco una sintesi ridotta di quello che i miei modelli assomigliano:In maprouce MongoDB, come posso appiattire l'oggetto valori?
db.receipts.findOne()
{
"_id" : ObjectId("4e57908c7a044a30dc03a888"),
"path" : "/videos/1/show_invisibles.m4v",
"issued_at" : ISODate("2011-04-08T00:00:00Z"),
"status" : "200"
}
Ho scritto una MapReduce function che raggruppa tutti i dati in base al campo issued_at
data. Riepiloga il numero totale di richieste e fornisce una suddivisione del numero di richieste per ciascun percorso univoco. Ecco un esempio di ciò che l'output appare come:
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
}
}
}
}
Come posso fare l'aspetto output come questo, invece:
{
"_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
}
}
}
Questa è la risposta giusta, quindi votare per questo caso e quindi utilizzare http://stackoverflow.com/a/18124090/1402121 come soluzione – dmo