Обновить большой набор документов - PullRequest
6 голосов
/ 04 ноября 2011

Есть ли способ в couchdb обновить все документы, соответствующие определенным условиям? (например, создать новые поля и установить значения на основе других данных в документе)

Я понимаю, что если "новые" данные могут быть функционально получены из существующих данных, то технически вы можете сделать это с помощью новых представлений без изменения документов, но мне нужно обновить несколько тысяч документов по существу той же самой операцией.

Ответы [ 2 ]

7 голосов
/ 04 ноября 2011

Вы можете использовать API массовых документов: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API, но сначала вам нужно будет получить все документы и отправить их обратно.

или обработчик обновления документа: http://wiki.apache.org/couchdb/Document_Update_Handlers но вам по крайней мере нужно знать список идентификаторов документов и делать один запрос на каждый идентификатор.

В любом случае, нет ничего подобного sql, где вы можете выполнить оператор update / where.

0 голосов
/ 01 мая 2018

К вашему сведению: эта ссылка 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 } ] }

Вы можете сделать то же самое на любом языке. Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...