我正在研究couchDB。如果我理解正确,你不能只是向couchDB发送一个“查询”并进行部分更新。
例如,此文档称为“用户”(为简洁起见而简化):
{
allusers: [
{"id": 1, "username":"myuser1", "pass":"secret"},
{"id": 2, "username":"myuser2", "pass":"password"},
{"id": 3, "username":"myuser3", "pass":"crypto"}
]
}
是否真的没有办法更新用户3的密码,而是我必须加载整个文档,在客户端上使用javascript进行更新,然后使用PUT请求发回整个对象?< / p>
我希望我不太了解couchDB的工作原理并希望完成任务。
如何更新可能非常大的对象的一部分?
答案 0 :(得分:4)
文档存储中的文档(如CouchDB)在概念上类似于RDBMS表中的行或文件系统中的文件, not 表。
在您的示例中,您将拥有myuser1
的单独文档,myuser2
的一个文档和myuser3
的一个文档,每个文档都很小,自包含且因此很容易并快速更新。理想情况下,您的所有文档都是这样的。
CouchDB Guide在CouchDB是什么以及为什么(以及何时!)有用的时候有一个很好的章节。
答案 1 :(得分:1)
使用update handler function来避免发送整个文档以更新部分内容。
如果是文档,您将可以访问已发送和当前版本的数据。然后你改变文档并将其交还给CouchDB。