如何创建CouchDB视图以基于多个非唯一字段来连接文档

时间:2013-09-19 14:10:16

标签: couchdb

我有一个包含以下形式文档的数据库:

{“Type”:“A”,“Date”:“2013-09-19”,“Week”:“A”,“Day”:“Mon”}

{“Type”:“B”,“Week”:“A”,“Day”:“Mon”,“Class”:“xyz”}

如何创建一个视图,列出特定日期的所有类(来自doc.Type =“B”)(来自doc.Type =“A”)?基本上它意味着匹配“周”和“日”字段。我找到了一些示例(主要基于Christopher Lenz的解决方案),但这些示例仅基于匹配的一个字段进行匹配,这在一种文档类型中是唯一的。

更新

要回应@Daniel澄清:

我希望能够在URL查询中输入日期。这将匹配类型“A”doc。由此,我希望所有类型B文档具有与原始类型A相同的周和日值。

1 个答案:

答案 0 :(得分:0)

阅读本文,我不知道如何使用一个查询在Couch中完成它(您一次只能查询一个视图),因为文档类型B没有{{1} }字段。文档类型B中没有date使得单个视图无法使用复合键。您可以在两个查询中轻松完成,无需更改/重组文档。

在{A}视图上按date进行的第一次查询将为您提供第二次查询所需的dateday值。

第二个查询将针对具有类似这样的复合键的视图运行...

week

现在,您将拥有与原始"views": { "type-A-by-date": { "map": "function(doc) { if (doc.type && (doc.type == 'A') { emit([doc.date], [doc.week,doc.day]); } }" }, "type-B-by-week-day": { "map": "function(doc) { if (doc.type && doc.type == 'B') { emit([doc.week,doc.day], doc); } }" }, 查询匹配的weekday的B类文档。

LMK如果您需要更多信息: - )