Я новичок в 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]});
}
}
результат, который я получаю для каждой сгенерированной строки:
{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, заключается в том, что я хотел бы воспользоваться преимуществами бессхемного характера всего этого. Если я добавлю дополнительное поле к «результатам», я бы хотел иметь возможность сообщать об этом, не добавляя его явно в функцию карты.