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