我有一个数据库,其中包含大致如下形式的文档:
{"created_at": some_datetime, "deleted_at": another_datetime, "foo": "bar"}
假设我们将来不需要处理“deleted_at”,那么获取数据库中未删除文档的计数是微不足道的。创建一个简化为以下内容的视图也很简单(使用 UTC):
[
{"key": ["created", 2012, 7, 30], "value": 39},
{"key": ["deleted", 2012, 7, 31], "value": 12}
{"key": ["created", 2012, 8, 2], "value": 6}
]
...这意味着 39 个文档在 2012 年 7 月 30 日被标记为创建,12 个在 2012 年 7 月 31 日被标记为删除,依此类推。我想要的是一种有效的机制来获取 2012-08-01 (0+39-12 == 27) 上“存在”多少文档的快照。理想情况下,我希望能够以日期作为键或索引来查询视图或数据库(例如,已预先计算并保存到磁盘的东西),并将计数作为值或文档。例如:
[
{"key": [2012, 7, 30], "value": 39},
{"key": [2012, 7, 31], "value": 27},
{"key": [2012, 8, 1], "value": 27},
{"key": [2012, 8, 2], "value": 33}
]
这可以很容易地通过遍历视图中的所有行来计算,保持一个运行的计数器并在我每天进行时总结,但是随着数据集的增长,这种方法会变慢,除非我对缓存或存储结果。有没有更聪明的方法来解决这个问题?