在CouchDB中更新文档

问题描述:

我知道如何更新CouchDB中的文档,但是当我更新文档时,我没有为更新指定的字段被删除。我如何限制相同。例如,我的CouchDB文档包含字段:名称,年龄,电子邮件,我想只更新此文档的电子邮件字段。所以我只是通过电子邮件字段,它的价值,文档ID和它的相应版本。但是当我做这样的更新时,我的文档现在只包含电子邮件。我该如何限制这一点,即只有电子邮件ID得到更新才能保留剩余的字段,并且价值完好无损。 我使用jquery.couch.js在CouchDB中更新文档

也许你正在做的一切都错了......你试图以非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

所以我只是通过在电子邮件领域,它的价值,对文档ID及其相应 转。

您需要的整个文档保存更新的值,不只是要更新的值。把文件看作是一个很大的复合价值;如果不改变整个事物,你不能改变它的一部分。

+0

所以,有关如何去做的任何建议。我正在创建一个讨论区并在评论字段中以数组形式保存我的评论。那么,我该如何实现这一点,以便用户输入评论时会更新,而不会影响以前的评论。 – swaroopsm 2012-08-06 12:51:53