View 基于多字段的couchdb视图查询

View 基于多字段的couchdb视图查询,view,mapreduce,couchdb,View,Mapreduce,Couchdb,我是couchdb的新手,我一直坚持一个场景。我有以下数据 { _id:"1", firstName: "John", lastName: "John" } 我正在编写一个视图来返回firstName=John或lastName=John的文档,并具有以下映射。因此,查询将是/view/byName?key=John function(doc){emit(doc.firstName, doc);emit(doc.lastName, doc);} 我可以在reduce中过滤掉重复的内容,但是我

我是couchdb的新手,我一直坚持一个场景。我有以下数据

{
_id:"1",
firstName: "John",
lastName: "John"
}
我正在编写一个视图来返回firstName=John或lastName=John的文档,并具有以下映射。因此,查询将是/view/byName?key=John

function(doc){emit(doc.firstName, doc);emit(doc.lastName, doc);}

我可以在reduce中过滤掉重复的内容,但是我正在寻找一种方法来过滤map中的文档。

如果“过滤器”的意思是获取所有唯一值,那么reduce是正确的方法。这也表明了这一点。只需创建一个虚拟reduce

functionkey,值{返回true;}


并使用?group=true调用您的视图,您将获得所有独特的结果

如果我没弄错的话,你想要约翰·史密斯和约翰·布莱克的两份文件,但是约翰·约翰应该被报告一次

coach为您提供了一组与示例中的keys John相关的唯一密钥。只需发出name和document id[doc.firstName,doc.\u id]和[doc.lastName,doc.\u id]对,reduce就可以满足您的需要

["John", "ID_OF_SMITH"] != ["John", "ID_OF_BLACK"]
["John", "ID_OF_JOHNJOHN"] == ["John", "ID_OF_JOHNJOHN"]