我正在努力实现一个map / reduce函数,它连接两个文档并将结果与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函数。
我查看了其他帖子,但找不到合适的例子。
如果有人知道如何解决这个问题会很棒。
答案 0 :(得分:2)
据我所知,多个类别文档可能具有相同的mainCat
值。称为视图整理的技术适用于在关系模型中使用单个连接的某些情况。在你的情况下,它没有帮助:虽然你使用两个文档方案,但你确实有三个级别的结构:main-category< - category< - transaction。我认为你应该考虑改变数据库设计。
通过在交易文档中存储mainCat
值来复制数据会有所帮助。我建议使用有意义的ID来代替生成的ID。您可以考虑例如"COL_LEBEN-7568a6de86e5e"
(带有一些随机值的连接mainCat
,-
中永远不会出现mainCat
分隔符。然后,使用map函数中的简单解析器,为事务发出["COL_LEBEN", "7568a6de86e5e"]
,为类别发出["COL_LEBEN"]
,为reduce得到总和。