Qualcuno può spiegare a me perché il seguente non funziona:CouchDB Group e Key Range
Assumendo la seguente struttura del documento:
{
"_id": "520fb089a6cb538b1843cdf3cca39a15",
"_rev": "2-f96c27d19bf6cb10268d6d1c34799931",
"type": "nosql",
"location": "AZ",
"date": "2012/03/01 00:00:00",
"amount": 1500
}
E una funzione Map definita in questo modo:
function(doc) {
var saleDate = new Date(doc.date);
emit([doc.location,saleDate.getFullYear(),saleDate.getMonth()+1],doc.amount);
}
E utilizzando la funzione integrata _sum
per il riduttore.
Quando si esegue questa (con il gruppo = true) si ottengono risultati come questo:
{"rows":[
{"key":["AZ",2012,2],"value":224},
{"key":["AZ",2012,3],"value":1500},
{"key":["WA",2011,12],"value":1965},
{"key":["WA",2012,1],"value":358}
]}
Ora, se si modifica la query per qualcosa di simile:
http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2
È possibile ottenere risultati come questo :
{"rows":[
{"key":["AZ",2012],"value":1724},
{"key":["WA",2011],"value":1965},
{"key":["WA",2012],"value":358}
]}
Quindi, con questo in mente se volevo scoprire tutte le vendite nel 2011 per "WA" non potevo exe carino qualcosa del genere:
http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2&key=["WA",2011]
Questo esempio è stato preso dai video utili su nastri NoSQL.
http://nosqltapes.com/video/understanding-mapreduce-with-mike-miller
Sì, ha funzionato e ora ha più senso. Grazie anche per il link alla guida di ViewCollation. – eggsy84
Stavo partendo dal presupposto che sia stato ottenuto dai risultati della fase di riduzione, ma ora capisco che è stato eseguito dai risultati della funzione Mappa. Grazie per l'aiuto :) – eggsy84