2013-03-16 84 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中查看關於[Linked Documents](http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents)的頁面 – 2013-03-17 23:28:21

回答

0

不幸的是,您需要將兩個map-reduce函數鏈接在一起以實現此結果,並且該功能在CouchDB中不可用。有關更多信息,請參閱this question

1

正如在另一個答案中所說,這是不可能做到這一點與一個單一的請求。

但是,您可以執行以下操作來代替:索引的ParentID

  1. 定義地圖(不減少)的觀點:

    function(o) { 
        if (o.ParentID) { 
        emit(o.ParentID); 
        } 
    } 
    
  2. 發送的第一請求你的對象知道其父的ID:

    GET /myDatabase/myObject 
    
  3. 然後森d到您的視圖

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

的請求有幾個請求不應該在這裏造成多大的危害,因爲它們的數量(2)是恆定的。此外,您可以將它們隱藏在由NodeJS處理的單個請求之後。