Ответ 1
Вы можете написать представление, подобное этому:
function(doc) {
if (doc.person_id && doc.group_id) {
emit([doc.person_id, doc.group_id], {"name":doc.name,"department":doc.department});
}
}
Я изменил свой id на person_id, поэтому его нельзя легко смутить с помощью _id
Я использовал массив как ключ для представления, поэтому вы можете легко запросить его следующим образом:
http://127.0.0.1:5984/testdb/_design/designdoc/_view/testview?key=[12,3]
Это будет более или менее похоже на этот запрос:
SELECT name, department FROM Persons where person_id = 12 and group_id = 3 ;
Вот статья о фильтрации и упорядочении с представлениями: http://barkingiguana.com/2009/01/22/filtering-and-ordering-couchdb-view-results/
В вики-версии couchdb есть очень хорошая страница: http://wiki.apache.org/couchdb/HTTP_view_API
В этой главе руководства couchdb описаны ключи массива: http://guide.couchdb.org/draft/views.html