2017-08-01 4 views
0

Je suis tout nouveau à noSQL, couchDB, et mapreduce et besoin d'aide.apprendre mapreduce dans Fauxton

J'ai la même question discutée ici {How to use reduce in Fauxton} mais ne comprennent pas la réponse :(

J'ai une fonction de carte de travail:..

function (foo) { 
    if(foo.type == "blog post"); 
    emit(foo) 
} 

qui retourne 11 documents individuels que je veux modifier cette option pour retourner foo.type avec un compte de 1. J'ai essayé:

function (doc) { 
    if(doc.type == "blog post"); 
    return count(doc) 
} 

et "_count" à partir du panneau Réduire, mais je fais clairement quelque chose de mal, car la vue ne renvoie rien.

Merci d'avance pour toute aide ou conseil!

Répondre

1

Plan

Alors, quand vous construisez une fonction de carte, vous créez une lettre ou une carte Dictionnary qui sont des éléments clés: la valeur des structures de données.

Votre fonction de carte devrait émettre des clés que vous interrogerez. Vous pouvez également émettre une valeur, mais si vous avez l'intention d'obtenir simplement le document associé, vous n'avez pas besoin d'émettre de valeurs. Pourquoi? Parce qu'il existe un paramètre de requête qui peut être utilisé pour renvoyer le document associé (?include_docs=true).

Réduire

Ensuite, vous pouvez réduire la fonction qui sera appelée pour chaque résultat avec les mêmes touches. Chaque résultat avec la même clé sera traité par votre fonction de réduction pour réduire la valeur.

exemple corrigé

Donc, dans votre cas, vous souhaitez mapper le document du document par type je suppose.

Vous pouvez créer une fonction qui émet des documents ayant la propriété type.

function(doc){ 
    if(doc.type) 
     emit(doc.type); 
} 

Si vous interrogez cette vue, vous verrez que les clés de chaque ligne seront le type du document. Si vous choisissez la fonction de réduction _count, vous devez avoir le nombre de documents par type.

Lorsque vous interrogez la vue, vous devez spécifier: group=true&reduce=true

En outre, vous pouvez obtenir tous les documents de type blog post en questionnant avec ces paramètres: ?key="blog post"

1

En Fauxton, la Réduire étape est une sorte de maladroit et non intuitif à trouver.

  1. Sélectionnez _count dans la fenêtre contextuelle "Reduce (optional)" où vous tapez dans votre carte.
  2. Sélectionnez "Enregistrer le document puis Build Index". Cela affichera vos résultats de carte .
  3. Trouvez le bouton "Options" en haut à côté d'une icône d'engrenages. Si vous voyez une bande verte à la place, fermez la bande verte avec le X.
  4. Sélectionnez Options, puis le cercle de contrôle "Réduire". Sélectionnez Exécuter une requête.