2015-07-30 1 views
0

Lorsque je fais une recherche une vue en Couchbase l'aide du paramètre user_id (clé), limite (10) et sauter (0), je reçois la réponse qui a la structure suivante:Comment obtenir le nombre total Vues Couchbase

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

Voici mon avis qui renvoie la liste des rapports basés sur user_id: -

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

est ici l'exemple de rapport 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" 
} 

b Le nombre de lignes est de 3, donc si je veux atteindre la pagination, comment puis-je obtenir le nombre total, donc ça peut être utile pour la pagination.

+0

ce que vous entendez par « mais le nombre de lignes est 3 »? –

+0

La longueur des rangées est 3, elle contient 3 rapports – rash111

+0

Votre exemple de document contient 4 éléments dans le tableau 'abonné', qui m'a éjecté. –

Répondre

1

total_rows contient le nombre non filtré, il doit donc être égal au nombre total de subscribed entrées (toutes les paires [user,report]). Si vous voulez effectuer une pagination efficace, vous ne devez pas utiliser skip(n), car cela oblige l'index à balayer les premières lignes n et à les supprimer.

ce que vous devez faire à la place est d'utiliser startkey, startkey_docid et limit (bien, vous réellement utiliser skip(1) pour se débarrasser du dernier résultat de la page précédente).

cela est expliqué dans un peu de détails dans ce billet de blog: http://blog.couchbase.com/pagination-couchbase