在couchdb中有什么方法可以更新所有符合某些条件的文档吗?(例如,创建新字段并根据文档中的其他数据设置值)我意识到,如果“新”数据可以在功能上从现有数据中派生出来,那么从技术上讲,您可以通过新视图来实现这一点,而无需更改文档,但我需要用基本相同的操作来更新几千个文档。
waxmsbnn1#
您可以使用批量文档API:http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API但你需要先有所有的文档,并提交回来。或文档更新处理程序:http://wiki.apache.org/couchdb/Document_Update_Handlers但是你至少需要知道一个文档ID的列表,并且每个ID执行一个请求。无论哪种方式,都没有像SQL那样可以发出update/where语句。
pxyaymoc2#
FYI:这个链接http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API似乎没有显示你所暗示的内容。以防有人像我一样被困住。如果你喜欢,我用Arc或Postman。首先执行一个GET /{database_name}/_all_docs;,然后当你得到返回的文档时:例如
GET /{database_name}/_all_docs;
{ "total_rows": 7, "offset": 0, "rows": [ { "id": "16726115a28ba714ce4fddbcf2ce730d", "key": "16726115a28ba714ce4fddbcf2ce730d", "value": { "rev": "1-7d72992fabc85621165b4c0b68b45fac" } } }
然后在数据中添加一行,对/{database_name}/_bulk_docs执行POST,并使用body:
{ "docs": [ { "id": "4b4c709d04483f2b94cbef30cff2430e", "key": "4b4c709d04483f2b94cbef30cff2430e", "value": { "rev": "13-ebd31862b44ad2d4753147d41737d478" }, "_deleted": true } ] }
你可以用任何语言做同样的事情。希望它能帮助其他人。
2条答案
按热度按时间waxmsbnn1#
您可以使用批量文档API:http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API但你需要先有所有的文档,并提交回来。
或文档更新处理程序:http://wiki.apache.org/couchdb/Document_Update_Handlers但是你至少需要知道一个文档ID的列表,并且每个ID执行一个请求。
无论哪种方式,都没有像SQL那样可以发出update/where语句。
pxyaymoc2#
FYI:这个链接http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API似乎没有显示你所暗示的内容。
以防有人像我一样被困住。如果你喜欢,我用Arc或Postman。首先执行一个
GET /{database_name}/_all_docs;
,然后当你得到返回的文档时:例如然后在数据中添加一行,对/{database_name}/_bulk_docs执行POST,并使用body:
你可以用任何语言做同样的事情。希望它能帮助其他人。