2016-10-07 6 views
0

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

  • Запрос rows_per_page + 1 строки из представления
  • Дисплей rows_per_page строк, магазин + 1 строка как next_startkey и next_startkey_docid
  • В качестве информации страницы, сохранить Клавишапуска и next_startkey
  • Используйте next_ * значения создайте следующую ссылку и используйте другие, чтобы создать предыдущую ссылку.

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

ответ

0

Прежде всего, сортировка всегда будет на KEYS. Выполнение запроса _all_docs приводит к запросу таблицы, в которой ключ является _id.

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

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

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

Таким образом, используя сортировку приведет сортировку ключа :)

+0

Я сожалею, но я не думаю, что вы понимаете, вопрос в целом. Да, ваше решение работает, но то, что я хочу достичь, это сортировка + разбиение на страницы. Техника разбиения на страницы, описанная выше, требует уникального «ключа» для обслуживания в качестве закладки для следующей страницы, и я просто не могу использовать временную метку в качестве ключа. –

+0

Существует множество методов разбиения на страницы, как описано [здесь] (http://docs.couchdb.org/en/2.0.0/couchapp/views/pagination.html). Все они могут использоваться с моим решением. Когда у вас есть представление, вы всегда имеете минимум 3 свойства (id, key, value). Используя представление, вы сможете правильно сортировать ** и ** все еще иметь возможность получить последний идентификатор для разбивки на страницы. –

Смежные вопросы