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

时间:2014-06-28 06:39:36

标签: 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中的重复项,但是我正在寻找一种过滤地图中文档的方法。

2 个答案:

答案 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"]