Как я могу получить доступ к связанным документам в функции карты в CouchDb? - PullRequest
3 голосов
/ 11 марта 2011

Можно ли получить значения загрузки из связанных документов и передать их как часть ключа / значения вместе со значениями из текущего документа в CouchDb?

Пример:

{Id: 1, Type: Entity, Name: US, Code: 001}
{Id: 2, Type: Entity, Name: Alaska, Code: AL, Parent_Id: 1}
{Id: 3, Type: Entity, Name: California, Code: CAL, Parent_Id: 1}
{Id: 4, Type: Entity, Name: Juneau, Code: C-JUN, Parent_Id: 2}

Я хотел бы прочитать код, имя и т. Д. Из родительского объекта и текущего объекта и передать их как ключ / значение в функции карты. Если у родителя есть еще один родитель, я бы тоже хотел прочитать значения из него. (Ходьба по ссылкам в других базах данных)

1 Ответ

6 голосов
/ 11 марта 2011

В map-Reduce, если вы emit() объект с _id в нем, то этот идентификатор будет документ, который вы получите при запросе с ?include_docs=true.

Таким образом, когда картаработает в Калифорнии, это будет делать emit(key, {_id: doc.Parent_id, entity: doc})

Если вы запросите представление с ?include_docs=true, каждая строка будет иметь value.entity для документа о Калифорнии, а также значение doc с документомСША.

Два ограничения:

  1. Таким способом можно запросить только один уровень глубины для каждого запроса.
  2. Чтобы использовать трюк include_docs, выдолжен знать _id связанного документа, когда вы emit()

Другой вариант для этого - просмотр сопоставления , когда все связанные или похожие документы отправляются так, что все они находятся рядом.в представлении.(Обычно вы отправляете ключ id одного документа и Parent_Id всех его дочерних элементов, поэтому все они попадают под один и тот же ключ в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...