I have a problem very similar to that described in this stack overflow: http://stackoverflow.com/questions/17017337/getting-unique-id-from-couchdb-view <http://stackoverflow.com/questions/17017337/getting-unique-id-from-couchdb-view>
So I have written a variation of the list function suggested as the answer that ensures unique ids. It also sends the correctly formatted ViewResult JSON. function ( head, req ) { var ar = new Array(); var allRowsMap = {}; while ( row = getRow() ) { ar.push( row.id ); allRowsMap[row.id] = row; } ar = ar.sort().filter( function ( e, i, arr ) { return arr.lastIndexOf( e ) === i; } ); send( '{"total_rows":' ); send( ar.length ); send( ',"offset":' ); send( head.offset ); send( ',"rows":[\n' ); for ( i = 0; i < ar.length; i++ ) { send( toJSON( allRowsMap[ar[i]] ) ); if ( (i + 1) < ar.length ) { send( ',' ); } send( '\n' ) } send( ']}' ); } This is my view (all_by_realmOrgId) *without* the list function: http://127.0.0.1:5984/mydb/_design/UserDoc/_view/all_by_realmOrgId <http://127.0.0.1:5984/mydb/_design/UserDoc/_view/all_by_realmOrgId> {"total_rows":22,"offset":0,"rows":[ {"id":"4a4e63484222aba701b61117f3559478","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355b41d","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355b769","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355c095","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355c5b4","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355cd9d","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc76","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc95","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355e9fb","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355f1a1","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355f405","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f3559478","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355b41d","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355b769","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355c095","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355c5b4","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355cd9d","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc76","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc95","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355e9fb","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355f1a1","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355f405","key":["b2","2020202020202020"],"value":null} ]} This is my view (all_by_realmOrgId) with the list function (unique_by_id): http://127.0.0.1:5984/mydb/_design/UserDoc/_list/unique_by_id/all_by_realmOrgId <http://127.0.0.1:5984/mydb/_design/UserDoc/_list/unique_by_id/all_by_realmOrgId> {"total_rows":11,"offset":0,"rows":[ {"id":"4a4e63484222aba701b61117f35096aa","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f352fa43","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f352fd3f","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f352ffe8","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f3530eaa","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f35311e0","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f3531e37","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f3532811","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f3533260","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f353396f","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f353483a","key":["b2","2020202020202020"],"value":null} ]} However when I try and page my view it fails to work as I intended because it’s only listing uniquely the records selected between skip and limit: http://127.0.0.1:5984/mydb/_design/UserDoc/_list/unique_by_id/all_by_realmOrgId?limit=6&skip=6 <http://127.0.0.1:5984/mydb/_design/UserDoc/_list/unique_by_id/all_by_realmOrgId?limit=6&skip=6> {"total_rows":6,"offset":6,"rows":[ {"id":"4a4e63484222aba701b61117f3559478","key":["b2","2020202020202020"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc76","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355dc95","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355e9fb","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355f1a1","key":["b2","1010101010101010"],"value":null}, {"id":"4a4e63484222aba701b61117f355f405","key":["b2","1010101010101010"],"value":null} ]} . This may be an impossible ask but…can anyone suggest a way to modify my list function to enable pagination to work? . Alternatively, is there another way to achieve the pagination of a view where duplicates can be removed (SELECT UNIQUE in SQL) TIA SimonT