我是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中的重复项,但是我正在寻找一种过滤地图中文档的方法。
答案 0 :(得分:0)
如果通过过滤器意味着获得所有唯一值,则reduce是正确的方法。 Couchdb the definitive guide也表明了这一点。只需创建一个虚拟缩小
function(key,values){return true;}
并使用?group=true
调用您的观点,您将获得所有独特的结果。
答案 1 :(得分:0)
如果我理解正确,你想要“John Smith”和“John Black”这两个文件,但是“John John”应该报告一次。
Couch为您提供了与键相关的唯一键集(在您的示例中为“John”)。只需发出一对名称和文档ID([doc.firstName, doc._id]
和[doc.lastName, doc._id]
),reduce就可以执行您想要的操作。
["John", "ID_OF_SMITH"] != ["John", "ID_OF_BLACK"]
["John", "ID_OF_JOHNJOHN"] == ["John", "ID_OF_JOHNJOHN"]