Couchdb 如何使用“任意”比较筛选视图?

Couchdb 如何使用“任意”比较筛选视图?,couchdb,Couchdb,我在couchdb中有一个包含4个文档的数据库。。。 以下是文档来源: {身份证:…,性别:F,帽子:蓝色} {身份证:…,性别:F,帽子:红色} {身份证:…,性别:M,帽子:蓝色} {身份证:…,性别:M,帽子:红色} 以下是我的看法: function(doc) { emit([doc.gender,doc.hat], doc); } 但我想使用以下情况获取数据: 选择性别为“F”的所有项,并完成任何类型的帽子| 选择所有具有任何性别的,并具有红色“帽子堆栈” 如何使第二点起作用?

我在couchdb中有一个包含4个文档的数据库。。。 以下是文档来源:

{身份证:…,性别:F,帽子:蓝色} {身份证:…,性别:F,帽子:红色} {身份证:…,性别:M,帽子:蓝色} {身份证:…,性别:M,帽子:红色} 以下是我的看法:

function(doc) {
   emit([doc.gender,doc.hat], doc);
}
但我想使用以下情况获取数据:

选择性别为“F”的所有项,并完成任何类型的帽子| 选择所有具有任何性别的,并具有红色“帽子堆栈” 如何使第二点起作用??
如何使用任何比较筛选视图???

对于第二点,您需要这样的视图

function(doc) {
   emit(doc.hat, null);
}
使用?键=红色进行查询


注意:我发出null以节省索引中的空间。使用“include_docs=true”进行查询以取回文档。

那么这意味着我必须创建另一个视图???@Robert Newson,你的意思是“key=RED”而不是“hat=RED”?是的,对不起,?key=。而且,是的,您需要一个索引到您的数据中,以实现与RDBMS相同的任何查询方式。您需要为每个排序提供一个视图,但有时您可以组合视图。例如,您的原始视图可以回答两类问题:1查找特定性别的所有匹配项?startkey=[M]&endkey=[M,{}],2查找特定性别和帽子颜色的所有匹配项?key=[M,RED]。