Вам нужно будет создать хотя бы один вид, чтобы сделать эту работу. У меня нет четкого представления о ваших потребностях, поэтому я просто сделаю простой пример, не думая, что это лучший способ реализовать то, что вы хотите.
Посетите Futon на http://yourserver.com:5984/_utils, и создайте представление в своей базе данных. Вам понадобится только функция карты, чтобы выполнить то, что вы просите:
function(doc) {
if (doc.tag && (doc.tag == "article" || doc.tag == "report")) {
emit(doc.tag, doc);
}
}
Если вы сохраните свое представление и назовете его Articles_or_reports, вы можете получить данные из своего представления с помощью этого запроса:
http://yourserver.com:5984/db/_design/test/_view/articles_or_reports
Который вернется
{"total_rows":2,"offset":0,"rows":[
{"id":"168ba21f7209994b69336dd8c30041f3","key":"article","value":{"_id":"168ba21f7209994b69336dd8c30041f3","_rev":"1-f033b30522d09c33cbd68332b89c95a7","type":"blogpost","title":"Fourth blog post","tag":"article"}},
{"id":"168ba21f7209994b69336dd8c3003139","key":"report","value":{"_id":"168ba21f7209994b69336dd8c3003139","_rev":"1-f7a473afc253972f7cfec62a335dcb23","type":"blogpost","title":"Second blog post","tag":"report"}}
]}
Но для этого всегда понадобится cURL или что-то в этом роде?
Это зависит от вашего приложения, но единственный интерфейс к CouchDB - через HTTP. Есть библиотеки для многих языков, чтобы вывести ваше взаимодействие на более высокий уровень.