CouchDB - сортировка документов по позиции - PullRequest
4 голосов
/ 10 марта 2010

Какова наилучшая практика сортировки / упорядочения нескольких документов по заданному пользователем порядку (позиции) в CouchDB?

Решения, о которых я думал:

  1. Каждый документ имеет значение "позиция", начиная с 1 до n. Представление будет излучать это значение. Проблема: если один документ отсортирован, все остальные документы с большей позицией должны быть обновлены. Это могут быть сотни обновлений. Хм.

  2. Каждый документ знает, что это _id предыдущего документа. Заказ генерируется после получения представления.

  3. Это специальный документ, хранящий _id всех документов, которые должны быть отсортированы в массиве. Мы снова сортируем это решение после получения представления.

Есть ли другое или более простое решение? В решении СУБД 1. была лучшая практика, и простой запрос на обновление выполнял обновление позиции всех документов.

С наилучшими пожеланиями, Бернд

1 Ответ

4 голосов
/ 11 марта 2010

Вы можете использовать значение с плавающей запятой, например, от 0,0 до 1,0 для позиции. Чтобы переместить Документ A между документами B и C, вы просто устанавливаете его новую позицию на (B.position + C.position) / 2.0 (то есть среднее значение их позиций).

...