2012-03-30 62 views
1

我有一個網站,我的文檔大小約爲1MB。爲了避免任何形式的概念連接,我將所有相關數據放在一個文檔中。在couchdb中僅獲取文檔的幾個屬性

現在我經常只需要獲取文檔的一個或兩個屬性。每個文件有超過10個屬性,其中許多屬性非常大。我無法繼續爲每個屬性組合編寫視圖。

我應該怎麼做?我看到的唯一方法是即時創建視圖,然後使用這些視圖。或者有沒有更好的方法?

回答

2

http://wiki.apache.org/couchdb/Document_Update_Handlers

雖然它似乎很奇怪調用更新功能,沙發允許你從文檔而不更新它返回信息。請參閱xml示例。

這裏可能是可以擴展的例子:

添加jsonpath您ddoc,(https://github.com/s3u/JSONPath

 
function(doc, req) { 
    var jsonpath = require('jsonpath'); 
    var path = req.query.path; 
    var target = jsonpath(doc, path); 
    var json = JSON.stringify(target); 
    var resp = { 'headers' : { 'Content-Type' : 'application/json' }, 'body' : json }; 
    return [doc, resp]; 
} 
+1

以上仍然是成立的,但實際上我會建議使用一個顯示函數。它幾乎完全相同的代碼。更正確的方法。 – 2012-04-01 17:47:40

+0

不要忘記列表函數:如果您只是_querying_一些預定義的屬性,但需要_retrieve_任意屬性組合,則返回JSON對象的列表函數僅包含由查詢參數指定的那些文檔部分你要。 – ebohlman 2012-05-04 23:55:57

+0

我已經創建了一些庫來使這個更有趣。請參閱https://github.com/ryanramage/kanso-jsonselect – 2012-05-05 04:39:17