我有大量的文件,每一天都有效。范围可以从1周到1年。我希望能够获取在特定日期有效的所有文档。如何获得在给定日期有效的所有CouchDB文档的列表?
我该怎么做?
举个例子说,我有以下两个文件:
doc1 = {
// 1 year ago to today
start_at: "2012-03-22T00:00:00Z",
end_at: "2013-03-22T00:00:00Z"
}
doc2 = {
// 2 months ago to today
start_at: "2012-01-22T00:00:00Z",
end_at: "2013-03-22T00:00:00Z"
}
和地图功能:
(doc) ->
emit([doc.start_at, doc.end_at], null)
所以对于6个月前的日期我只会得到DOC1,日期一个星期前我会得到这两份文件,并且明天的日期我将不会收到任何文件。
请注意,实际的解决方案需要下到第二个请求,并且有很多文件,所以为每个有效秒发出一个密钥的策略是不合适的。
获取对于给定日期有效的所有文档可能足够小以便在客户端处理以确定哪些仍然有效。虽然平均而言,每个文档需要180个发射......我想避免为这个问题增加任何额外的技术。 – Simon 2013-03-22 22:23:00
我至少会对它进行一次基准测试,看看你是否真的遇到过任何问题,我听说过一些相当大的观点。 – 2013-03-22 23:42:20
也许如果你使用星期数来代替,你可以使用大约1/7的磁盘空间,也许可以用一个'_list'函数来完成过滤器。 – 2013-03-22 23:45:33