Я новичок в couchdb, я просмотрел документы и сообщения SO, но по какой-то причине этот простой запрос все еще ускользает от меня.Query Couchdb по дате при сохранении порядка сортировки
SELECT TOP 10 * FROM x WHERE DATE BETWEEN startdate AND enddate ORDER BY score
UPDATE: Это не может быть сделано. Это печально, так как для получения этого типа данных вы должны оттянуть потенциально миллионы записей (несколько полей ) с кушетки, тогда сделайте либо фильтрацию, сортировку или ограничение самостоятельно, чтобы получить желаемые результаты. Теперь я возвращаюсь к своему оригинальному решению с использованием _changes для сбора и хранения в других местах данных, которые мне нужны для выполнения этого запроса.
Вот мои обновленные вид (благодаря Доминику):
emit([d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), score], doc.name);
Что мне нужно сделать, это:
- Всегда сортировать по баллам по убыванию
- Необязательно фильтр (например, только СЕГОДНЯ)
- Предел по x
Обновление: Спасибо Доминику я гораздо ближе - но все еще имеющий вопрос.
?startkey=[2017,1,13,{}]&endkey=[2017,1,10]&descending=true&limit=10&include_docs=true
Это возвращает документы между датами, отсортированных по баллам
Однако, если я хочу, топ-10, независимо от даты, то я только получить обратно 10 лучших отсортированные по дате (а не оценка)
Отлично, спасибо Доминик, я собираюсь попробовать это сейчас. Я фактически не хранил документ, но только что создал подмножество документа (с 8 реквизитами) (то есть: {Name: doc.prop.name, ...} - было бы еще более эффективно использовать include_docs = true (и view = emit ([keys], 1), когда у doc есть около 50 свойств? Я могу измерить, но звучит так, как вы узнали бы с головы :-) – schmoopy
Я также обновил свой вопрос, узнав, что предел действительно может повлиять на вещи - но ваше решение отлично работает для всех нужд - спасибо огромное! – schmoopy
Я слишком скоро говорил. Если я добавляю лимит, то он не работает правильно из-за сортировки влево-вправо. Я обновил свой вопрос (и отредактировал мой комментарий на 100-й раз, извините за все обновления) – schmoopy