Получить частичные документы из couchdb - PullRequest
0 голосов
/ 07 мая 2018

Я использую couchdb для хранения больших документов, что вызывает некоторые проблемы при загрузке их в память. Я понимаю, что база данных не предназначена для такого использования. Как запасное решение, возможно ли получить частичные документы из базы данных, не создавая представление?

Например, если в документе есть поля id, content и extra_content, я хотел бы получить только первые два.

Спасибо заранее.

Ответы [ 2 ]

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

Если вы используете CouchDB 2.x, вы можете использовать конечную точку / db / _find в качестве механизма для извлечения части документа.

POST / db / _find

  {
    "selector": {
      "_id": "a-doc-id"
    },
    "fields": [
      "_id",
      "content"
    ]
   }

Вы получите только тот набор полей, который вы указали в запросе

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

Это невозможно до CouchDB 2.x. Для CouchDB 2.x или выше см. Ответ Хуанхо Родригеса.

Но одним из возможных способов обхода любой версии CouchDB было бы использование вложенных файлов, которые по умолчанию исключаются из выборки. Если некоторые из ваших данных не всегда нужны и их не нужно включать в индексы, вы можете хранить их как (JSON) -вложения, а не как часть документа напрямую:

{
    "id": "foo",
    "content": "stuff",
    "extra_content": "other stuff"
}

становится:

{
    "id": "foo",
    "content": "stuff",
    "_attachments": {
        "extra_content": {
            "content_type": "application/json",
            "data": "ZXh0cmEgc3R1ZmYK"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...