如何将两个参数值传递给couchdb视图?

时间:2011-04-21 09:23:06

标签: sql couchdb language-comparisons

我想在CouchDB视图中重现这个SQL。

SELECT name,department FROM Persons where id = ? and group_id = ? ;

如何在CouchDB中为此SQL编写视图和查询视图?

1 个答案:

答案 0 :(得分:18)

你可以写一个像这样的视图:

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 wiki上有一个非常好的页面视图:http://wiki.apache.org/couchdb/HTTP_view_API

couchdb指南中的这一章解释了数组键:http://guide.couchdb.org/draft/views.html