2014-08-28 19 views
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 

위의 장소에 어떤 플랫폼 (문자열)을 넣을 지 알아야합니다.

답변

1

오 답변을 찾을 수있었습니다.

답변은 와일드 카드를 사용했습니다. 그래서 기본적으로 나는 그것이 어떤 JS 객체를 받아 들일 수 있도록,

http://localhost/dummy_db_new/_design/views/_view/total? 
start_key=["2014-08-20",2,0] 
&end_key=["2014-08-20",2,{}] 
&group=true 

{} 자바 스크립트 객체를 의미 모든 플랫폼 유형을 받아 와일드 카드 요청을 보냈습니다.