1

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

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

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

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

{
   "_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 函数。

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

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

4

1 回答 1

2

我了解,多个 Category 文档可能具有相同的mainCat值。称为视图排序的技术适用于在关系模型中使用单连接的某些情况。在您的情况下,这将无济于事:尽管您使用两个文档方案,但您确实具有三层结构:主类别 <- 类别 <- 事务。我认为您应该考虑稍微更改一下数据库设计。

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

于 2013-04-23T21:02:22.800 回答