CouchDB уникальные элемент

 
0
 
NoSQL
ava
Chort409 | 07.03.2012, 00:52
Добрый день.

Возникла следующая проблемма при работе с CouchDB.
В результате работы view получаю дублирующие записи типа:

{"total_rows":511,"offset":381,"rows":[
{"id":"CDOC_2.16.840.1.113883.3.59.3:0947___QCPR___80717","key":"7012979","value":{"one":"one","two":"two"}},
{"id":"CDOC_2.16.840.1.113883.3.59.3:0947___QCPR___80921","key":"7012979","value":{"one":"one","two":"two"}}
]}

Есть ли возможность получить одно единственное значение по заданному параметру ?
Пробовал сделать это через reduse, но особых результатов не получил.
Можно конечно фильтровать уже на сервере, но хотелось бы сделать это на стороне CouchDB.
Comments (1)
ava
Chort409 | 14.03.2012, 21:11 #
Если кому будет интересно, то проблемма решина.
Немножко кривым способом но встаки.

Нужно переписать view с использование сложного ключа, который будет содержать все параметры которые нужны от этого view.
Выглядит примерно вот так:


function(doc) {
var complexKey = [doc.document.one, doc.document.two,...];
emit(complexKey, {doc.document.one, doc.document.two,...});
}


Так же надо добавить очень простою reduse функцию


_count

И как бы все. Запрос к CouchDB теперь выглядит так:
?group=true&startkey=["7012979"]&endkey=["7012979",{}]

Ответ от бд будет выглядить следующим образом:

{"rows":[
{"key":["one","two"],"value":2}
]}

Собственно то, что и хотели получить.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit