Сортировка дат в представлениях CouchDB

У меня есть вложенный объект JSON для ключа status ниже:

{
"2011-01-19 09:41:00 AM": "Prototyping status application",
"2011-01-20 09:41:00 AM": "Playing with CouchDB"
}

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

Каков наилучший способ получить самую последнюю дату?

Спасибо


person 0xdeadbeef    schedule 23.01.2011    source источник


Ответы (1)


Используйте сортировку просмотра и создайте сложный ключ.

Если вы сначала хотите отсортировать по пользователю, а затем по времени, используйте это как ключ. Если вы хотите сортировать только по времени, не указывайте имя пользователя в качестве ключа.

Если вы используете значения в стиле даты:

emit([Date.parse(doc.created_at).getTime(), doc.username], doc);

Если вы используете формат даты, который уже лексикографически сортируется:

emit([doc.created_at, doc.username], doc);
person b_erb    schedule 23.01.2011
comment
Большое спасибо, как раз то, что я хотел. - person 0xdeadbeef; 23.01.2011
comment
Я бы, наверное, предпочел добавить новый документ для каждого статуса. Это приведет к большему количеству документов, но, как правило, предотвращает конфликты и позволяет масштабировать дизайн с «согласованными в конечном итоге» статусами. Каждый документ, который должен, по крайней мере, содержать сообщение о состоянии, пользователя, время и внутренние метаданные, которые могут вам понадобиться. - person b_erb; 24.01.2011
comment
У меня есть документ для каждого пользователя и вложенный документ для статуса внутри пользовательского документа. У меня все еще возникают проблемы с получением только последнего статуса. Я, вероятно, могу справиться с этим на уровне приложения, но я пытаюсь научиться делать это таким образом. - person 0xdeadbeef; 24.01.2011
comment
wiki.apache.org/couchdb/HTTP_view_API#Querying_Options – ограничение — ваш друг (сортировка по убыванию даты и взять только первые n элементов). - person b_erb; 24.01.2011
comment
как будет выглядеть URL-адрес для запроса по дате, времени и пользователю? - person OrangePot; 17.06.2017