2011-07-08 51 views
0

我使用mongodb來存儲圖像元數據和S3網址。我想 顯示一段時間內觀看次數最多的內容,比如'今日','本週', 就像youtube那樣使用視頻。我應該如何在 mongodb上存儲「視圖」來查詢這種數據?MongoDB查詢時間範圍的頁面瀏覽量

我想創建一個視圖收集和存儲每個「視圖」作爲 與最新信息的文檔,並存儲在觀看次數的快速檢索 個人圖像文件的視圖計數。這兩個 將在每個綜合瀏覽量中更新。我假設MapReduce將從那裏完成工作 ,但我無法完全想象它。

回答

3

除非您需要,否則不要爲每個視圖創建單獨的文檔。

你可以砍的日期不顯著的部分,只存儲當天+小時或只有一天,並使用$inc添加一個新的「視圖」:

db.hits.update(
    {"item": "image0001", "date": ..dayordayandhour..}, 
    {"$inc": { "hits": 1}}, 
    true) //upsert 

對於可以使用聚合group,mapreduce對此是一個矯枉過正。

注:如果你不需要確切的數字,你可以做一個小時的基礎上聚集,然後更新「今日」 /「本週」專櫃上(你可以manintain多個計數器用這種方法!)每個文檔都可以根據查看計數器進行快速查找和排序。

+0

我告訴過你不行,請繼續討論。 –