2010-11-26 7 views
0

Je rencontre des problèmes de regroupement des résultats de plage de dates dans dch divan. Dire que j'ai ces données:comment renvoyer des valeurs entre les dates et les résultats de groupe dans couchdb

2010-11-14, Tom

2010-11-15, Tom

2010-11-15, Dick

2010-11-15, Tom

2010-11-20, Harry

et je veux utiliser une vue (et peut-être réduire la fonction) pour revenir noms regroupés entre 2010-11-14 et 2010-11-16, par exemple

Tom 3

Dick 1

comment cela peut-il être atteint ?

Répondre

0

Je suggère la structure du document ci-dessous, et la carte et réduire les fonctions:

{ date : '2010-11-14', name : 'Tom' } 

function(doc) { var r = {}; r[doc.name] = 1; emit (doc.date, r); } 

function (keys, values, rereduce) { 
    var r = {}; 
    for (var i in values) { 
    for (var k in values[i]) { 
     if (k in r) r[k] += values[i][k]; 
     else r[k] = values[i][k]; 
    } 
    } 
    return r; 
} 

Ensuite, vous interrogerait la vue, demander une complète réduire (sans regroupement) avec des paramètres de StartKey et endkey 2010-11-14 et 2010-11-16 . Vous obtiendrez en retour une seule valeur:

{ 'Tom': 3, 'Dick': 1 } 
Questions connexes