Я пытался выяснить, как вернуть данные на основе метки времени. В основном, я хочу запросить 100 документов на основе поля timestamp. 100 документов должны быть старше, чем метка времени, которую я передал. Также я хочу создать обновление, где я могу передать временную метку, и я получаю 100 новых документов. Очевидно, логика здесь будет иной, но с трудом выяснять, как Couchbase может это сделать.Запрос Couchbase, основанный на времени
Вот то, что я до сих пор:
моего взгляда, как вы можете видеть, что также нужно использовать сложный ключ, потому что я не только проверять дату, но моя видимость поле. У меня нет ничего в сокращенной части представления.
function (doc, meta)
{
if(meta.type == "json" && doc.type == "POST" && doc.created != null)
{
emit([dateToArray(doc.created), doc.visibility], null);
}
}
Я спрашиваю, используя клиент java, для тестирования установлено ограничение на 2. Здесь странно, что setDescending должен быть ложным, чтобы вернуть что-либо обратно. Также не имеет значения, в какую дату я проходил, я всегда получаю результат. Я хочу, чтобы ожидаемое поведение состояло в том, чтобы передать дату и получить результаты, равные или старше даты.
View view = client.getView("dev_posts", "post_list");
ComplexKey keys = ComplexKey.of(DataConstants.getDateAsArray(startDate), postType);
Query query = new Query();
query.setRangeStart(keys);
query.setIncludeDocs(true);
query.setLimit(2);
query.setDescending(false);
ViewResponse response = client.query(view, query);
EDIT:
По сути то, что я ищу из Couchbase похож на Facebook, Pintrest и т.д. мобильных приложений. В заданную метку времени, когда пользователь обновляется, я хочу получить что-то новое. Когда пользователь выполняет прокрутку, я хочу получить следующую группу за определенную дату.
** Обновление **
Так что это была решена, но будет расследовать его дальше. ComplexKey превращает наш массив дат в «[2013,11,8,20,0,0]» вместо того, чтобы оставлять его [2013,11,8,20,0,0]. Продолжаем исследовать его дальше. На данный момент работать не нужно, чтобы использовать ComplexKey, но создать наш собственный сложный ключ и передать его startKey как только ключ.
Спасибо за предложение. Я думаю, что в этом случае ссылочные документы не будут правильной моделью. Действительно, оба условия должны быть выполнены, поэтому время должно быть ниже или выше заданной отметки времени, и поле видимости будет одинаковым для всех документов. Справочные документы по этим данным создавали бы слишком много дополнительных документов в системе. Я создал представления, используя сложные ключи, которые работали достаточно хорошо, но проблема, кажется, является диапазоном со временем. Возможно, мне нужно взглянуть на уменьшенную часть представления. – Michael
Я нашел [что-то] (http://www.couchbase.com/communities/q-and-a/how-write-query-specific-range-and-group-clause), который раньше не знал, может быть, это будет быть полезным для вас. «запрос диапазона читает полный индекс, и мы читаем startkey только слева направо (как полный ключ)». Возможно, после конкатенирования 2 ключей вы всегда получаете результат. Вы проверяете свой запрос без «doc.visibility» в составе ComplexKey? –