Couchdb ';展平';用于报告目的的文档层次结构

Couchdb ';展平';用于报告目的的文档层次结构,couchdb,Couchdb,我是CouchDB的新手,我只是想评估一下它在普通任务中的有用性。其中一项任务是生成报告。我的问题是:如果我有这样的文档结构: { "_id": "29763f342ab34fd7b579fd4546aaed93", "_rev": "3-f56dccaa214f3e9fce1e1e3e32e710a2", "client_id": "sse", "outcomes": [ { "contact": "phone",

我是CouchDB的新手,我只是想评估一下它在普通任务中的有用性。其中一项任务是生成报告。我的问题是:如果我有这样的文档结构:

{
   "_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"
       }
   ]
}
function(doc) {
    for(i=0;i<doc.outcomes.length;i++)
    {
        emit(null, {'client_id':doc.client_id,'outcome':doc.outcomes[i]});
    }
}
还有这样的映射函数:

{
   "_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"
       }
   ]
}
function(doc) {
    for(i=0;i<doc.outcomes.length;i++)
    {
        emit(null, {'client_id':doc.client_id,'outcome':doc.outcomes[i]});
    }
}
而不是

{client_id: "sse", contact: "phone", type: "phone_outbound", 
attempt: "1", provider_id: "123456789", status_outbound: "noanswer"}
请参阅第一个示例输出中的额外“结果:”和括号?这就是我不想要的。很明显,我的观点是错误的,但我不知道如何实现我的目标。有人能帮忙吗?密钥需要保持为空


我不以名称ie doc.contact引用每个字段的原因是我想利用它的无模式特性。如果我在“结果”中添加了一个额外字段,我希望能够在不将其显式添加到映射函数的情况下对其进行报告。

doc.outlets[I]。client\u id=doc.client\u id; 发出(空,文件结果[i])