Архив метки: couchbase

CouchDB: группировка данных по родительскому элементу

При разработке своего одного приложения (скоро анонсирую!) я использовал в качестве БД Apache CouchDB, точнее использовал его чуть более продвинутую версию от коммерческой организации – CouchBase. В этом посте я привожу решение нередкой, но нетривиально решаемой задачи (нетривиально для людей, не знакомых до этого с NoSQL).

Задача

Возврат сгруппированных значений по родительскому элементу.

В БД обычно данные хранятся в примерно таком формате:

{
   "_id": "256b9dd4492210351c9db34ee500d817",
   "_rev": "1-94366c1d2b7a075f33ebbd7a96565f4b",
   "url": "http://surdoserver.ru",
   "status": 200,
   "timestamp": 1969072012,
   "ping": 332
}
{
   "_id": "256b9dd4492210351c9db34ee500f288",
   "_rev": "1-1770b12a395ca76887c792e5c1d99f8f",
   "url": "http://surdoserver.ru",
   "status": 200,
   "timestamp": 1969073012,
   "ping": 220
}
и т.д.

Нам же необходимо получить статистику по каждому сайту без дублирования информации, то есть что-то типа такого:

{
   "url": "http://surdoserver.ru",
   "data":
   [
      "status": 200,
      "timestamp": 1969072012,
      "ping": 332
   ],
   [
     "status": 200,
     "timestamp": 1969073352,
     "ping": 220
   ]
}

Читать далее