我的Couch数据库中有以下数据结构。
我需要每天计算不同的sessions_id
个。记录也必须按app_version
进行过滤。
我当前的MapReduce看起来像这样
"dau": {
"map": "function(doc) {
date = doc.session.timestamp.split("T")[0];
emit([date, doc.app_version, doc.session.session_id], 1);
}",
"reduce": "_count"
}
但是这给了我输出如下
["2014-08-20", 2, "kOnNIhCNQ31LlkpEPQ7XnN1D"] 1 ["2014-08-20", 2, "TOnNIhCNQ31LlkpEPQ7XnN1D"] 2 ["2014-08-21", 2, "TOnNIhCNQ31LlkpEPQ7XnN1D"] 2
我需要将其打印为 - 因为它是每天唯一session_id
的数量
["2014-08-20", 2] 2 ["2014-08-21", 2] 1
关于如何做的任何想法?
非常感谢任何帮助。
[
{
"app_version": 2,
"platform": "android",
"session": {
"timestamp": "2014-08-20T00:00:00.000Z",
"session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
"ip": "202.150.213.66",
"location": "1.30324,103.5498"
}
},
{
"app_version": 2,
"platform": "android",
"session": {
"timestamp": "2014-08-21T00:00:00.000Z",
"session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
"ip": "202.150.213.66",
"location": "1.30324,103.5498"
}
}
{
"app_version": 2,
"platform": "ios",
"session": {
"timestamp": "2014-08-21T00:00:00.000Z",
"session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
"ip": "202.150.213.66",
"location": "1.30324,103.5498"
}
},
{
"app_version": 1,
"platform": "ios",
"session": {
"timestamp": "2014-08-21T00:00:00.000Z",
"session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
"ip": "202.150.213.66",
"location": "1.30324,103.5498"
}
}
]
答案 0 :(得分:1)
在您的视图中首先放置app_version:
emit([doc.app_version, date, doc.session.session_id], 1);
然后使用group_level = 2
进行查询