【问题标题】:couchdb - Map Reduce - How to Join different documents and group results within a Reduce Functioncouchdb - Map Reduce - 如何在 Reduce 函数中加入不同的文档和组结果
【发布时间】:2013-04-23 18:05:03
【问题描述】:

我正在努力实现一个连接两个文档并将结果与​​ reduce 相加的 map/reduce 函数。

第一个文档类型是类别。每个类别都有一个 ID,在属性中我存储了一个详细类别、一个主要类别和一个部门(“Bereich”)。

{
   "_id": "a124",
   "_rev": "8-089da95f148b446bd3b33a3182de709f",
   "detCat": "Life_Ausgehen",
   "mainCat": "COL_LEBEN",
   "mainBereich": "COL",
   "type": "Cash",
   "dtCAT": true
}

第二种文档类型是交易。属性显示每笔交易的所有详细信息,包括引用类别 ID 的字段“newCat”。

{
   "_id": "7568a6de86e5e7c6de0535d025069084",
   "_rev": "2-501cd4eaf5f4dc56e906ea9f7ac05865",
   "Value": 133.23,
   "Sender": "Comtech",
   "Booking Date": "11.02.2013",
   "Detail": "Oki Drucker",
   "newCat": "a124",
   "dtTRA": true
}

现在,如果我想开发一个 map/reduce 来获得以下形式的结果:

例如:“主要类别的名称”、“交易中所有值的总和”。

我发现我可以使用“_ID:”和 ?include_docs=true 引用另一个文档,但在这种情况下我不能使用 reduce 函数。

我查看了这里的其他帖子,但找不到合适的示例。

如果有人知道如何解决这个问题,那就太好了。

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    我了解,多个 Category 文档可能具有相同的 mainCat 值。称为视图排序的技术适用于在关系模型中使用单连接的某些情况。在您的情况下,这将无济于事:尽管您使用两个文档方案,但您确实具有三层结构:主类别

    通过将mainCat 值也存储在交易文档中来复制数据会有所帮助。我建议对交易使用有意义的 ID 而不是生成的 ID。例如,您可以考虑"COL_LEBEN-7568a6de86e5e"(将mainCat 与一些随机值连接,其中- 分隔符永远不会出现在mainCat 中)。然后,使用 map 函数中的简单解析器,为事务发出 ["COL_LEBEN", "7568a6de86e5e"],为类别发出 ["COL_LEBEN"],然后通过 reduce 得到总和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      相关资源
      最近更新 更多