2013-03-16 3 views
3

У меня есть список таких документов в моей базе данных couchDB.Как писать представления CouchDb?

{ 
    "_id": "9", 
    "_rev": "1-f5a9a0b76c6ae1fe5e20f1a1f9e6f8ba", 
    "Project": "Vaibhava", 
    "Type": "activity", 
    "Name": "Civil_Clearence", 
    "PercentComplete": "", 
    "DateAndTime": "", 
    "SourcePMSId": "1049", 
    "ProgressUpdatedToPMSFlag": "NO", 
    "UserId": "Kundan", 
    "ParentId": "5" 
} 

Как написать функцию просмотра, так что, когда я передать doc._id в качестве ключа, то я должен получить все братья и сестры из этого doc._id (документы с ParentID же, как ключ, который я послал) ??

+1

Ознакомьтесь с этой страницей в wiki о [Связанные документы] (http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents) –

ответ

0

К сожалению, для достижения этого результата вам понадобится объединить две функции уменьшения карты, и эта функция недоступна в CouchDB. См. this question для получения дополнительной информации.

1

Как сказано в другом ответе, это невозможно сделать с помощью одного запроса.

Однако, вы можете сделать следующее вместо: вида

  1. не Define карты (без снижения), индексированный на ParentID:

    function(o) { 
        if (o.ParentID) { 
        emit(o.ParentID); 
        } 
    } 
    
  2. Отправить первый запрос на объект, чтобы знать Идентификатор его родителя:

    GET /myDatabase/myObject 
    
  3. Затем сена d запрос на ваш взгляд

    GET /myDatabase/_design/myApp/_view/myView/?key="itsParent"&include_docs=true 
    

Имея несколько запросов не должен причинить много вреда здесь, так как их количество (2) постоянно. Кроме того, вы можете скрыть их за единственным запросом, обрабатываемым NodeJS.

Смежные вопросы