Как ПРИСОЕДИНИТЬСЯ с помощью SUM() в CouchDB?

#couchdb

#couchdb

Вопрос:

Я хотел бы создать следующую таблицу стилей, используя CouchDB и связанные документы:

  ---------------- ------------ -------------------- 
|     Title      |    Date    | Number of Comments |
 ---------------- ------------ -------------------- 
| Hello World    | 2000-01-01 |                301 |
| Next Question? | 1999-03-04 |                 11 |
| Final Post     | 1992-04-01 |                 64 |
 ---------------- ------------ -------------------- 
  

У меня есть документы, которые выглядят так для сообщений:

 { _id : 'hello-world', title : 'Hello World', date : '2000-01-01', type : 'post' }
  

и для комментариев:

 { _id : 'some-comment', title : 'Great post!', postid: 'hello-world', type : 'comment' }
{ _id : 'some-comment2', title : 'Poor quality', postid: 'final-post', type : 'comment' }
  

Как я могу это сделать? Я бы предпочел использовать одну карту / сокращение.

Комментарии:

1. Вы не можете сделать это одним запросом. Вы можете использовать map / reduce, чтобы получить количество комментариев на сообщение, а затем запросить couch, чтобы получить информацию об этих сообщениях.

Ответ №1:

Я отвечаю на это для себя на случай, если у кого-то еще возникнет этот вопрос. Я думаю, что мое недопонимание связано с тем, что я привык к SQL.

В принципе, мои варианты:

  1. Создайте представление проектного документа ( comments-by-post ), которое даст мне post._id в качестве ключа и # количество комментариев к этому сообщению. Затем я могу объединить это с сообщениями, полученными с помощью запроса Mango или другого представления на моем языке программирования.
  2. В качестве альтернативы, и, вероятно, правильнее, я могу просто создать свойство, вызываемое numberOfComments для объекта post, и обновлять его каждый раз, когда кто-то комментирует. Это кажется неправильным с точки зрения SQL, но я считаю, что гибкость базы данных документов подходит для этого.

Для начала я решил сделать # 1 и поэкспериментировать с # 2.