2014-08-28 3 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" 
    } 

    } 
] 

мне нужно запросить все записи, которые произошли между аа заданного количеством дат и числом APP_VERSION, и я хотите получить общее количество каждой платформы.

Итак, я написал функцию уменьшения числа, подобную этой;

"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 (для запросов по диапазону дат)

Im отправив запрос 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 

{} означает объект яваскрипт, поэтому он будет принимать любой объект JS.

Смежные вопросы