2012-06-09 56 views
1

我在couchdb中有以下模式的30m记录。couchdb - 在复杂键上过滤

{ countryIso: 'TR' 
, region: '68' 
, city: 'Ankara' 
, lat: '39.927200317383' 
, lon: '32.864398956299' 
, action: 'install' 
, itime: 1288523291000 // That is unix timestamp 
, fileId: 33221 
, api_level: '3' 
, display_size: '320x480' 
, model: 'Galaxy' 
} 

这些记录表示服务中文件的下载。我想要做的是提供这些事件的统计数据。

一些示例查询:

  • 鉴于FILEID和日期范围内,得到每天下载
  • 鉴于FILEID和日期范围的数量,获得display_size的人均日
  • 鉴于FILEID和日期范围内使用,得到每天

非常适合在api_level(如果可能的话)我们也应该回答更复杂的查询,如:

  • 鉴于FILEID,日期范围和countryIso,每

节目下载我做了以下地图功能

function (doc) { 
    emit([doc.fileId, 
     Math.floor(doc.itime/60/60/24), 
     doc.countryIso, doc.display_size, 
     doc.api_level], 1) 
} 

_sum为减少功能。现在

我能做到这一点

​​3210

例如,让每天的特定的fileid的下载。

或本

?group_level=3&startkey=[247]&endkey=[247,{}] 

{"rows":[ 
{"key":[247,14913505,"GB"],"value":4}, 
{"key":[247,14913528,"AE"],"value":4}, 
{"key":[247,14913563,"TR"],"value":4} 
]} 

让每一天的国家特定的fileid的下载。

但我似乎无法查询我的途观,将返回该

{"rows":[ 
{"key":[247,14913505,"320x480"],"value":4}, 
{"key":[247,14913528,"320x480"],"value":4}, 
{"key":[247,14913563,"320x533"],"value":4} 
]} 

我必须为每一个查询(图)我需要的,或者你认为它是一个独立的视图有可能创建一个复杂的视图来回答所有这些查询?

回答

2

没有办法切成这样的密钥,你只有词法顺序才能使用。因此请分开观看。