题
我是新来的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]);
不隶属于 StackOverflow