2015-07-30 13 views
0

Когда я запрашиваю некоторые рассматривают в Couchbase используя user_id (ключ), предел (10) и пропустить (0) параметр, я получаю ответ, который имеет следующую структуру:Как получить общее количество в couchbase Просмотров

{ 
    "total_rows":1896, 
    "rows":[...] 
} 

Вот мое мнение, кто возвращается список отчетов, основанных на user_id: -

function map(doc, meta) { 
    if (doc.type == 'report' && doc.subscribed) { 
     for (var subscriber in doc.subscribed) { 
      emit(subscriber, doc); 
     } 
    } 
} 

здесь является пример отчета документ: -

{ 
    "agree_allowed":true, 
    "assigned_by":"", 
    "assigned_to":"", 
    "closed":[ 

    ], 
    "comments_allowed":true, 
    "details":"Test", 
    "email":"", 
    "status":"In Progress", 
    "subscribed":{ 
     "user_cfd29b81f0263a380507":true, 
     "user_cfd29b81f0263a380508":true, 
     "user_cfd29b81f0263a380509":true, 
     "user_cfd29b81f0263a3805010":true 
    }, 
    "summary":"Test", 
    "time_open":0, 
    "timestamp":"2015-07-17T15:34:30.864Z", 
    "type":"report", 
    "user_id":"user_cfd29b81f0263a380507", 
    "username":"test17" 
} 

б ut rows count равно 3, поэтому, если я хочу достичь разбивки на страницы, как я могу получить общий счет, так что это может быть полезно для разбивки на страницы.

+0

что вы имеете в виду «но количество строк в 3»? –

+0

Строка длиной 3, содержит 3 отчета – rash111

+0

ваш пример doc содержит 4 элемента в 'подписанном' массиве, который меня отбросил. –

ответ

1

total_rows содержит нефильтрованное количество, поэтому оно должно быть равно общему количеству subscribed записей (все пары [user,report]).

Если вы хотите сделать эффективную разбивку на страницы, вы не должны использовать skip(n), потому что он заставляет индекс сканировать n первые строки и отбрасывать их.

, что вы должны сделать вместо этого использовать startkey, startkey_docid и limit (ну, на самом деле вы будете использовать skip(1), чтобы избавиться от последнего результата на предыдущей странице).

это объясняется совсем немного деталей в этом блоге: http://blog.couchbase.com/pagination-couchbase

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