我在沙发数据库中有两种类型的文档。有事件和出现。一个事件有许多出现。
事件:
{
"_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。
编写答案 0 :(得分:1)
是的,我认为这需要两个查询才能正确。您应该考虑通过将事件区域复制到出现文档中来进行非规范化,这样可以更容易。