2015-11-11 42 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 

让我知道这是否有帮助。