2010-02-05 4 views
3

Je ne connais pas encore CouchDB et j'essaie simplement d'évaluer son utilité dans les tâches courantes. Une telle tâche consiste à générer des rapports. Mon problème est le suivant: Si j'ai une structure de document comme celui-ci:'Aplatissement' d'une hiérarchie de documents à des fins de génération de rapports

{ 
    "_id": "29763f342ab34fd7b579fd4546aaed93", 
    "_rev": "3-f56dccaa214f3e9fce1e1e3e32e710a2", 
    "client_id": "sse", 
    "outcomes": [ 
     { 
      "contact": "phone", 
      "type": "phone_outbound", 
      "attempt": "1", 
      "provider_id": "123456789", 
      "status_outbound": "noanswer" 
     }, 
     { 
      "contact": "phone", 
      "type": "phone_outbound", 
      "attempt": "1", 
      "provider_id": "123456789", 
      "status_outbound": "noanswer" 
     } 
    ] 
} 

et une fonction de carte comme ceci:

function(doc) { 
    for(i=0;i<doc.outcomes.length;i++) 
    { 
     emit(null, {'client_id':doc.client_id,'outcome':doc.outcomes[i]}); 
    } 
} 

le résultat que je reçois par ligne générée est:

{client_id: "sse", outcome: { contact: "phone", type: "phone_outbound", 
attempt: "1", provider_id: "123456789", status_outbound: "noanswer" }} 

au lieu de

{client_id: "sse", contact: "phone", type: "phone_outbound", 
attempt: "1", provider_id: "123456789", status_outbound: "noanswer"} 

voir le supplément 'résultat:' et parenthèses dans le premier exemple de sortie? C'est ce que je ne veux pas. Évidemment, mon point de vue est faux, mais je ne peux pas trouver comment atteindre mon objectif. Quelqu'un peut-il aider? La clé doit rester nulle.

La raison pour laquelle je ne référence pas chaque domaine par son nom, c'est-à-dire doc.contact, c'est que je voudrais profiter de la nature schématique de tout cela. Si j'ajoute un champ supplémentaire aux résultats, j'aimerais pouvoir en rendre compte sans l'ajouter explicitement à la fonction de carte.

Répondre

2

doc.outcomes [i] .client_id = doc.client_id; emit (null, doc.outcomes [i]);

+0

parfait! merci Marc! – jdee

Questions connexes