更新大量文档

时间:2011-11-04 14:56:32

标签: couchdb

有没有办法在couchdb中更新符合特定条件的所有文件? (例如,根据文档中的其他数据创建新字段并设置值)

我意识到如果“新”数据可以从现有数据中获得功能,那么从技术上讲,您可以通过更改文档的新视图来实现这一目标,但我需要使用基本相同的操作更新几千个文档。

2 个答案:

答案 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 } ] }

你可以用任何语言做同样的事情。希望它可以帮助别人。