复杂密钥上的couchdb过滤
我在couchdb中有以下模式的3000万条记录复杂密钥上的couchdb过滤,couchdb,mapreduce,analytics,Couchdb,Mapreduce,Analytics,我在couchdb中有以下模式的3000万条记录 { 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: '320x
{ 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'
}
这些记录表示服务中文件的下载。我想做的是提供这些事件的统计数据
一些示例查询:
- 给定文件ID和日期范围,获取每天的下载次数
- 给定文件ID和日期范围,获取每天使用的显示大小
- 给定文件ID和日期范围,获取每天使用的api_级别
- 给定文件ID、日期范围和countryIso,显示每天的下载量
function (doc) {
emit([doc.fileId,
Math.floor(doc.itime/60/60/24),
doc.countryIso, doc.display_size,
doc.api_level], 1)
}
和\u sum
作为reduce函数
现在我能做到了
?group_level=2&startkey=[247]&endkey=[247,{}]
{"rows":[
{"key":[247,14913505],"value":4},
{"key":[247,14913528],"value":4},
{"key":[247,14913563],"value":4}
]}
例如,每天获取特定文件ID的下载
还是这个
?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}
]}
以获取每个国家/地区每天特定文件ID的下载
但我似乎不能质疑我的观点,以一种方式,将返回这一点
{"rows":[
{"key":[247,14913505,"320x480"],"value":4},
{"key":[247,14913528,"320x480"],"value":4},
{"key":[247,14913563,"320x533"],"value":4}
]}
我是否必须为我需要的每个查询(图)创建一个单独的视图,或者您认为有可能创建一个复杂的视图来回答所有这些查询?没有办法像这样分割键,您只需要处理词法顺序。因此,请提出不同的观点