Разбивка и сортировка CouchDB на страницы

#sorting #pagination #couchdb

#сортировка #разбивка на страницы #couchdb

Вопрос:

Итак, я использую этот подход в документах CouchDB для выполнения разбивки на страницы.

  • Запрос rows_per_page 1 строки из представления
  • Отображать строки rows_per_page, хранить 1 строку как next_startkey и next_startkey_docid
  • В качестве информации о странице сохраните startkey и next_startkey
  • Используйте значения next_* для создания следующей ссылки, а остальные — для создания предыдущей ссылки

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

Ответ №1:

Прежде всего, сортировка всегда будет по КЛЮЧАМ. Запрос _all_docs приводит к запросу таблицы, где ключом является _id.

 [
  {
    "key": "my_first_id",
    "value": {}
  },
  {
    "key": "my_second_id",
    "value": {}
  }
]
  

Поэтому, если вы хотите выполнить сортировку по другому полю, кроме _id, вам нужно будет использовать Отображение / уменьшение (просмотры) Например, вы можете создать представление, в котором ключом является поле updatedAt.
Это приведет к чему-то вроде этого :

 [
  {
    "key": "1475858068",
    "value": {}
  },
  {
    "key": "1475553268",
    "value": {}
  }
]
  

Таким образом, использование сортировки приведет к сортировке ключа 🙂

Комментарии:

1. Извините, но я не думаю, что вы понимаете вопрос в целом. Да, ваше решение работает, но я хочу добиться сортировки разбивки на страницы. Метод разбивки на страницы, который я описал выше, требует уникального «ключа» для использования в качестве закладки для следующей страницы, и я просто не могу использовать только временную метку в качестве ключа.

2. Существует множество методов разбивки на страницы, как описано здесь . Все они могут быть использованы с моим решением. Когда у вас есть представление, у вас всегда есть минимум 3 свойства (идентификатор, ключ, значение). Используя представление, вы сможете правильно сортировать и при этом иметь возможность получить последний идентификатор для разбивки на страницы.