2012-07-25 4 views
3

complexe Supposons que nous ayons quelques documents dans un CouchDB, comme celui-ciCouchDB réduire avec la clé

{ page: 'home', country: 'EN', timestamp: 15448 } 
{ page: 'search', country: 'FR', timestamp: 15448 } 
{ page: 'search', country: 'EN', timestamp: 15448 } 
{ page: 'home', country: 'DE', timestamp: 15457 } 

Chaque document représente un pageview d'un pays avec un horodatage donné. Ce que je voudrais faire est d'interroger ces documents, pour une page donnée, et une plage d'horodatage, obtenir le nombre de pages vues par pays pour cette gamme.

Ce que je suis venu faire est cette fonction de carte

function (doc) { 
    emit([doc.page, doc.timestamp, doc.country], 1) 
} 

et _sum comme la diminution de la fonction.

Je peux interroger la vue avec par exemple. startkey=["home",15448]&endkey=["home", 15448, {}] mais cela renvoie les pages vues par pays, par jour, ce qui est plus d'informations que j'ai besoin. (juste les pages vues par pays pour une période donnée).

Répondre

2

juste isabelle pays émettent

function (doc) 
{ 
    emit([doc.page, doc.timestamp], 1) 
} 

réduire la fonction

function (keys, value) 
{ 
    return sum(value); 
} 
+1

Comment est-ce différent de Emit ([doc.page, doc.timestamp, doc.country], 1)? Les deux donnent le nombre de pages vues par jour et par pays, et non les pages vues par pays pour une période donnée. –

Questions connexes