2012-08-06 127 views
2

我知道如何更新CouchDB中的文檔,但是當我更新文檔時,我沒有爲更新指定的字段被刪除。我如何限制相同。例如,我的CouchDB文檔包含字段:名稱,年齡,電子郵件,我想只更新此文檔的電子郵件字段。所以我只是通過電子郵件字段,它的價值,文檔ID和它的相應版本。但是當我做這樣的更新時,我的文檔現在只包含電子郵件。我該如何限制這一點,即只有電子郵件ID得到更新才能保留剩餘的字段,並且價值完好無損。 我使用jquery.couch.js在CouchDB中更新文檔

回答

3

也許你正在做的一切都錯了......你試圖以非CouchDB方式解決CouchDB中的問題。爲什麼你將所有的評論存儲在一個文檔中?如果你想找回它們與後一個要求,那麼你可以使用地圖聚合後從單獨的文件這樣的評論:

後的文件:{ _id: "post1", type: "post", ... } 註釋文檔:

{ type: "comment", 
    post: "post1", // id of the post being commenting 
    ... 
} 

地圖:

function (self) { 
    if (!self.type) return; 
    if (self.type == "post") { 
    emit([self._id, 0], self); 
    } else if (self.type == "comment" && self.post) { 
    emit([self.post, 1, self.time], self); 
    } 
} 

檢索後與評論與按日期排序:

curl http://127.0.0.1:5984/yourdb/_design/yourapp/_view/yourview?startkey=[%22post1%22]&endkey=[%22post1%22,{}] 

通過這種方式,您還可以只檢索一些註釋並輕鬆實現分頁。所有的評論應該存儲在接近帖子的B-tree中,所以它應該也是有效的。

相同的方法詳細描述here

2

所以我只是通過在電子郵件領域,它的價值,對文檔ID及其相應 轉。

您需要的整個文檔保存更新的值,不只是要更新的值。把文件看作是一個很大的複合價值;如果不改變整個事物,你不能改變它的一部分。

+0

所以,有關如何去做的任何建議。我正在創建一個討論區並在評論字段中以數組形式保存我的評論。那麼,我該如何實現這一點,以便用戶輸入評論時會更新,而不會影響以前的評論。 – swaroopsm 2012-08-06 12:51:53