如何定义一个我可以过滤不同类型文档的属性的couchdb视图?

时间:2013-03-19 13:52:42

标签: nosql couchdb

我在沙发数据库中有两种类型的文档。有事件和出现。一个事件有许多出现。

事件:

{
  "_id": "49bb92b8896515a2994e524b38a041d3",
  "type": "Event",
  "eventID": 1234,
  "area": "m1"
}

Occurence:

{
  "_id": "49bb92b8896515a2994e524b38a041d4",
  "type": "Occurence",
  "occurenceID": 7890,
  "eventID": 1234,
  "date": "2013-01-01"
}

我需要找到按区域名称和日期范围过滤的每个日期的出现次数。在SQL中,我将使用此查询:

SELECT Date, count(*)
FROM Event INNER JOIN Occurence ON Occurence.EventID = Event.EventID
WHERE Event.Area = "m1"
AND Occurence.Date BETWEEN '2013-01-01' AND '2013-02-01'
GROUP BY Date

我不介意执行多个查询,但我的数据库有超过300,000个出现的文档(并且会增长10倍),所以我需要通过尽可能少的文档来获得结果。查询此couchdb的应用程序使用node.js。

编写

1 个答案:

答案 0 :(得分:1)

是的,我认为这需要两个查询才能正确。您应该考虑通过将事件区域复制到出现文档中来进行非规范化,这样可以更容易。