考虑我从设备向mqtt订阅者发送记录。我发送的数据需要存储在cloudant db中。
例如,如果我发送{"_id":45,"dob":1205}
,它将以_rev id存储在cloudantdb中。如果我需要更新_id:45
,我需要包含_rev id,它是长数字和字母数字。
所以在节点红色中是否还有其他方法来动态获取_rev id并更新文档?
答案 0 :(得分:2)
要更新Cloudant / CouchDB中的任何文档,您需要该文档的_id和最新_rev值。
也就是说,为了使用_id = 123更新文档,您必须先行
GET database/123
,它将返回JSON文档,如此
{
_id:123,
_rev:1-abcdefg,
somekey : somedata
}
然后根据需要更改文档。
{
_id:123,
_rev:1-abcdefg,
somekey : somedata,
newkey : newdata
}
PUT database/123
。
然后,当你GET database/123
时,你应该得到像
{
_id:123,
_rev:2-gfedbca,
somekey : somedata,
newkey : newdata
}
您会看到_rev
值已更改以反映文档中的更改。
如果要再次更新文档,请确保包含最新的_rev值。
这意味着为了更新Cloudant / CouchDB中的文档,您必须首先获取该文档(至少是_id和_rev),在本地修改数据,然后将其重新输入数据库。
这里有一些应该有用的文档:http://docs.couchdb.org/en/2.0.0/intro/api.html#revisions
(注意,如果您在后续更新中使用旧的_rev,您将开始在数据库中创建冲突,从而导致文档的广泛修订树,最终降低数据库性能。)