как вернуть значения между датами и групповыми результатами в couchdb - PullRequest
0 голосов
/ 26 ноября 2010

У меня проблемы с группировкой результатов в диапазоне дат в coub db.Допустим, у меня есть эти данные:

2010-11-14, Том

2010-11-15, Том

2010-11-15, Дик

2010-11-15, Том

2010-11-20, Гарри

и я хочу использовать представление (и, возможно, уменьшить функцию), чтобы возвращать сгруппированные имена между 2010-11-14 и2010-11-16, например:

Том 3

Дик 1

как этого достичь?

1 Ответ

0 голосов
/ 28 ноября 2010

Я бы предложил следующую структуру документа, а также сопоставить и уменьшить функции:

{ date : '2010-11-14', name : 'Tom' }

function(doc) { var r = {}; r[doc.name] = 1; emit (doc.date, r); }

function (keys, values, rereduce) {
  var r = {};
  for (var i in values) { 
    for (var k in values[i]) {
      if (k in r) r[k] += values[i][k];
      else r[k] = values[i][k];
    }
  }
  return r;
}

Затем вы бы запросили представление, запрашивая полное сокращение (без группировки) с параметрами startkey и endkey 2010-11-14 и 2010-11-16.Вы получите взамен одно значение:

{ 'Tom': 3, 'Dick': 1 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...