CouchDB 更新大量文档

fnvucqvd  于 2023-09-28  发布在  CouchDB
关注(0)|答案(2)|浏览(239)

在couchdb中有什么方法可以更新所有符合某些条件的文档吗?(例如,创建新字段并根据文档中的其他数据设置值)
我意识到,如果“新”数据可以在功能上从现有数据中派生出来,那么从技术上讲,您可以通过新视图来实现这一点,而无需更改文档,但我需要用基本相同的操作来更新几千个文档。

waxmsbnn

waxmsbnn1#

您可以使用批量文档API:http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API但你需要先有所有的文档,并提交回来。
或文档更新处理程序:http://wiki.apache.org/couchdb/Document_Update_Handlers但是你至少需要知道一个文档ID的列表,并且每个ID执行一个请求。
无论哪种方式,都没有像SQL那样可以发出update/where语句。

pxyaymoc

pxyaymoc2#

FYI:这个链接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"
                }
            } 
}

然后在数据中添加一行,对/{database_name}/_bulk_docs执行POST,并使用body:

{
  "docs": [
    {
      "id": "4b4c709d04483f2b94cbef30cff2430e",
      "key": "4b4c709d04483f2b94cbef30cff2430e",
      "value": {
        "rev": "13-ebd31862b44ad2d4753147d41737d478"
      },
      "_deleted": true
    }
  ]
}

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

相关问题