2014-08-28 55 views
2

查詢意見我有一個CouchDB的記錄結構看起來像這樣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" 
    } 

    } 
] 

我需要查詢所有AA給定數量的日期和APP_VERSION數之間發生的記錄,和我想要通過平臺獲得每個人的總數。

所以我寫了這樣的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 

但問題是當我嘗試使用start_key和end_key(按日期範圍查詢)

林發送GET請求如下查詢他們。

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

哦,我能找到答案。

答案是使用通配符。所以基本上我發送一個通配符請求將接受任何平臺類型

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

{}意味着JavaScript對象,因此它會接受任何JS對象。