我是新来的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]});
    }
}

结果产生每行i得到的是:

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

,而不是

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

看到额外的 '结果:'并在第一示例输出括号?这就是我不想要什么。显然,我的观点是错误的,但我不能工作,如何实现我的目标。任何人都可以帮助?关键需要保持空。

我不引用的名字即doc.contact每个字段的原因是,我想利用这一切的无模式的本质优势。如果我添加一个字段来“成果”我希望能够在其报告没有明确地将它添加到地图的功能。

有帮助吗?

解决方案

doc.outcomes [I] .client_id = doc.client_id; 发射(NULL,doc.outcomes [I]);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top