Как получить сообщение с количеством комментариев в одном запросе с CouchDB? - PullRequest
1 голос
/ 04 января 2012

Как получить сообщение с количеством комментариев в одном запросе с CouchDB?

Я могу использовать map-Reduce для создания автономного представления [{key: post_id, value: comments_count}], но затем мне пришлось дважды нажать на DB - один запрос, чтобы получить сообщение, другой, чтобы получить comments_count.

Есть и другой способ (это делает Rails) - подсчитывать комментарии вручную на сервере приложений и сохранять его в атрибуте comment_count поста. Но тогда нам нужно обновлять весь пост-документ каждый раз, когда добавляется или удаляется новый комментарий. Мне кажется, что CouchDB не настроен таким образом, в отличие от RDBMS, когда мы можем обновить только атрибут comment_count в CouchDB, мы вынуждены обновить весь пост-документ.

Может быть, есть другой способ сделать это?

Спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Возвращаемое представление json включает в себя количество документов как 'total_rows', поэтому вам не нужно ничего вычислять самостоятельно, просто выведите все документы, которые вы хотите пересчитать.

{"total_rows":3,"offset":0,"rows":[
   {"id":...,"key":...,value:doc1},
   {"id":...,"key":...,value:doc2},
   {"id":...,"key":...,value:doc3}]
}
...