有没有办法在couchdb中更新符合特定条件的所有文件? (例如,根据文档中的其他数据创建新字段并设置值)
我意识到如果“新”数据可以从现有数据中获得功能,那么从技术上讲,您可以通过更改文档的新视图来实现这一目标,但我需要使用基本相同的操作更新几千个文档。
答案 0 :(得分:7)
您可以使用批量文档API: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API 但是你需要先拥有所有文档,然后将它们提交回来。
或文档更新处理程序:http://wiki.apache.org/couchdb/Document_Update_Handlers但您至少需要知道文档ID列表,并为每个ID执行一个请求。
无论哪种方式,都没有像sql那样可以发出update / where语句。
答案 1 :(得分:0)
仅供参考:此链接http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API似乎没有显示您所暗示的内容。
以防有人像我一样被困。如果你愿意,我会使用Arc或Postman。首先进行GET /{database_name}/_all_docs;
,然后返回文件:例如
{
"total_rows": 7,
"offset": 0,
"rows": [
{
"id": "16726115a28ba714ce4fddbcf2ce730d",
"key": "16726115a28ba714ce4fddbcf2ce730d",
"value": {
"rev": "1-7d72992fabc85621165b4c0b68b45fac"
}
}
}
然后在数据中添加一行对主体执行POST到/ {database_name} / _ bulk_docs:
{
"docs": [
{
"id": "4b4c709d04483f2b94cbef30cff2430e",
"key": "4b4c709d04483f2b94cbef30cff2430e",
"value": {
"rev": "13-ebd31862b44ad2d4753147d41737d478"
},
"_deleted": true
}
]
}
你可以用任何语言做同样的事情。希望它可以帮助别人。