【问题标题】:couchdb view query based on multiple fieds基于多个字段的couchdb视图查询
【发布时间】:2014-06-28 06:39:36
【问题描述】:

我是 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 中的文档。

【问题讨论】:

    标签: view mapreduce couchdb


    【解决方案1】:

    如果通过过滤器您的意思是获取所有唯一值,那么 reduce 是正确的方法。 Couchdb the definitive guide 也建议这样做。只需创建一个虚拟减少

    function(key,values){return true;}

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

    【讨论】:

      【解决方案2】:

      如果我理解正确,您希望在“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"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 2013-05-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多