2015-11-11 39 views
1


我們有一個很好的小CouchDB運行存儲一些用戶使用我們的網站的用戶習慣數據。
樣本項如下:CouchDB在時間戳內獲得結果

{ 
    "_id": "5a2711671b321c6295acfe04700e3d32", 
    "_rev": "1-a74c2d88a8277d9ad7ceb74406c9bb9e", 
    "search_term": "dream_theater", 
    "timestamp": 1447255047, 
    "session_id": "qjrsh7cq10oa9m1mebdikdcvg3", 
    "ip_address": "THE IP", 
    "browser": "Safari", 
    "browser_version": "9.0.1", 
    "platform": "Macintosh", 
    "service": [ 
    ], 
    "content_type": [ 
    ], 
    "language": "en", 
    "limit": 100 
} 

現在,我寫了幾MapReduce函數訪問此習慣的數據和信息中提取出來的。一個例子是這樣的:

"by_platform_browser": { 
      "map": "function(doc) { if (doc.browser && doc.platform) emit([doc.platform, doc.browser], 1) }", 
      "reduce": "function(keys, values, rereduce) { return sum(values) }" 
     } 

這將返回我一些這樣的東西(與組= TRUE):

{"rows":[ 
{"key":["Linux","Chrome"],"value":198}, 
{"key":["Linux","Firefox"],"value":129}, 
{"key":["Macintosh","Chrome"],"value":36}, 
{"key":["Macintosh","Safari"],"value":135}, 
{"key":["Windows","Chrome"],"value":37} 
]} 

正如你看到的,在每習慣的數據文檔中的時間戳字段。
現在我的問題本身:
我怎麼才能在給定的時間內收集數據。像從時代1447255000開始到結束於1447266000.
當我組合鍵時,我無法使用該組。
有沒有其他方法可以解決這個問題?
非常感謝你提前! //喬納斯

回答

0

你應該發出的時間戳,您的看法是這樣的:

"by_timestamp": { 
    "map": "function(doc) {\n emit(doc.timestamp, doc._id);\n}" 
} 

而且,爲了時間戳的特定範圍之間獲得的數據在查詢中使用startkeyendkey屬性。從瀏覽器中,你可以做這樣的事情,看看你是否得到了你想要的結果。

http://127.0.0.1:5984/<DATABASE_NAME>/_design/<DESIGN_DOC_NAME>/_view/by_timestamp?startkey=1447255000&endkey=1447266000 

讓我知道這是否有幫助。