Couchbase 2.2.0 - Count of unique values for specific json field


Also posted here:

I’m trying to figure out a way to count the number of unique values in a bucket that is not a primary key. Couchbase 2.5 provides a n1ql method to do this. If we use their beer-sample you can issue the following command:

select count(distinct style) from beer-sample

which returns a scalar value of 68.

I’m using couchbase 2.2.0, which technically doesn’t have n1ql. And I want to leverage the map/reduce/rereduce functionality if possible. The reason is that I have 100’s of millions of records and the adhoc query will probably take days to run. Is there such a way to do this?

For the map function I have the following:

function (doc, meta) {
if ( doc.type == “beer”)

for the reduce I have the following:

function(key, values, rereduce) { var u = {}, a = []; var results = {};
if (rereduce) {

  for (var i = 0; i < values.length; i ++ ) {
    for ( var j = 0; j < values[i].length; j ++ ) {
      if (u.hasOwnProperty(values[i][j])) {

      u[values[i][j]] = 1;
  return (a); 
} else {  
  for(var i = 0; i < values.length; i++) {
    if (u.hasOwnProperty(values[i])) {

    u[values[i]] = 1;


This returns an array with unique values but not a scalar count. Any way I can just get the scalar count of unique styles of beers? Thanks.