我在沙发数据库中有两种类型的文档。有事件和事件。一个事件有很多次发生。
事件:
{
"_id": "49bb92b8896515a2994e524b38a041d3",
"type": "Event",
"eventID": 1234,
"area": "m1"
}
发生:
{
"_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 编写的。