我正在尝试获取对象的唯一事件计数(比如视频):
以下是我的文件:
{
"type":"View",
"video_id": "12300",
"user_id": 3
}
{
"type":"View",
"video_id": "12300",
"user_id": 1
}
{
"type":"View",
"video_id": "45600",
"user_id": 3
}
我正在尝试为每个视频获得一个独特的(user_id
)个视图计数
我假设我想像这样映射我的数据:
function(doc) {
if (doc.type === 'View') {
emit([doc.video_id, doc.user_id], 1);
}
},
但我不明白如何将其减少到每个视频的唯一身份用户,或者我是否会出错。
答案 0 :(得分:6)
您应该查看group_level
视图参数。它将允许您更改分组发生的字段。
使用group_level = 1
,在这种情况下,它将按video_id
进行分组。使用group_level = 2
,它会在video_id
和 user_id
上进行分组。
答案 1 :(得分:4)
请求URL后添加?group = true。它将相同的键组合在一起作为reduce函数的输入:
function(keys, values, rereduce){
return sum(values);
}
应该这样做。
请注意,键和值是解压缩的键列表及其值。对于每次调用reduce,键上的分组都是相同的。