2
와 질의 뷰는 내가 날짜 AA 주어진 번호와 APP_VERSION 번호 사이에 일어난 모든 레코드를 조회하기 위해 필요한이CouchDB를 - start_key 및 end_key
[
{
"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"
}
}
]
처럼 보이는 CouchDB를 기록 구조를 가지고 있고, I 플랫폼 별 합계를 얻고 싶습니다.
이렇게 map-reduce 함수를 작성했습니다.
"total": {
"map": "function(doc) {
date = doc.session.timestamp.split("T")[0];
emit([date, doc.app_version,doc.platform], 1);
}",
"reduce": "_count"
}
이렇게하면 레코드를 날짜별로 그룹화하여 올바르게 출력 할 수 있습니다.
["2014-08-20", 2, "android"] 2
["2014-08-20", 2, "ios"] 1
["2014-08-21", 2, "android"] 1
["2014-08-21", 2, "ios"] 1
하지만 다음과 같이
임은 GET 요청을 전송 (날짜 범위에서 쿼리)을 start_key 및 end_key
을 사용하여 쿼리 할 때 문제가 온다;
http://localhost/dummy_db_new/_design/views/_view/total?
start_key=["2014-08-20",2,WHAT_TO_PUT_HERE]
&end_key=["2014-08-20",2,WHAT_TO_PUT_HERE]
&group=true
위의 장소에 어떤 플랫폼 (문자열)을 넣을 지 알아야합니다.