Ho bisogno di qualcosa di leggermente più complesso degli esempi nei documenti MongoDB e non riesco a riuscire a capirlo.Uso della mappa di MongoDB/riduzione a "raggruppa per" due campi
Dire che ho una collezione di oggetti della forma {date: "2010-10-10", type: "EVENT_TYPE_1", user_id: 123, ...}
Ora voglio ottenere qualcosa di simile a un gruppo SQL di query, il raggruppamento sia su data e tipo. Cioè, voglio il numero di eventi di ogni tipo in ogni giorno. Inoltre, mi piacerebbe renderlo unico da user_id, vale a dire. se un utente ha più eventi nello stesso giorno, contarli solo una volta.
Sto provando a farlo con la mappa/riduci.
faccio
db.logs.mapReduce(
function() {
emit(this.type, 1);
},
function(k, vals) {
var total = 0;
for (var i = 0; i < vals.length; i++)
total += vals[i];
return total;
}
)
che ben gruppi in base al tipo, ma ora, come faccio di gruppo in base alla data, allo stesso tempo? Sembra che la chiave in emit() non possa essere una matrice (ho pensato di fare emit([this.date, this.type], 1)
). Inoltre, come posso garantire l'unicità per utente?
Sto appena iniziando con MongoDB e sto ancora avendo problemi ad afferrare i concetti di base. Inoltre, non c'è molta documentazione disponibile là fuori. È apprezzato qualsiasi aiuto da parte di utenti più esperti. Grazie!
couchdb può eseguire matrici come chiavi, basta dire ' – dominic