我有大量的文件,每一天都有效。範圍可以從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