spring-data-cosmosdb: ограничить результат - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь использовать API Java Azure cosmosDB.Я хотел бы получить результаты по страницам.Например: мы можем передать экземпляр Pageable в Spring Data JPA и выбрать, скажем, 10 элементов за раз.Я не нашел никаких ссылок на то, как мы можем добиться этого с помощью Spring-data-cosmosdb.Я не мог использовать аннотацию @Query ("") тоже с этим плагином.Так что я не уверен, как я могу добиться нумерации страниц.

Любая помощь очень ценится.

С уважением,

Venky

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Вы можете построить что-то вокруг выставленного continuation token, что представлено в FeedResponse.

    FeedOptions queryOptions = new FeedOptions();
    queryOptions.setPageSize(10);
    queryOptions.setRequestContinuation("continuation token from previous request");

    FeedResponse<Document> queryResults = this.client.queryDocuments(collectionLink,
            "SELECT * FROM Family WHERE Family.lastName = 'Andersen'", queryOptions);
    string token = queryResults.getResponseContinuation()

Это пример того, как вы можете сделать это в C #SDK. Я не вижу способа сделать то же самое в Java, поэтому вам, вероятно, придется поиграть с этим.

0 голосов
/ 11 мая 2018

Нет простого способа выполнить нумерацию страниц в CosmosDb (или в большинстве / любой базе данных NoSQL в этом отношении), поскольку skip / take на самом деле не поддерживается шаблоном запроса.

Более распространенным шаблоном является сохранение ссылки на последний элемент, видимый на стороне клиента, в виде continuation token, который можно отправить обратно на сервер при последующих запросах. Например, пользователь запрашивает первые 10 элементов и возвращает результат обратно. Идентификатор 10-го элемента - asdfb1231. Запрос на получение второй «страницы» будет включать это значение, чтобы серверная часть могла продолжить запрос с этого смещения.

Об этом много писали в других местах. Одна из моих любимых статей на эту тему была написана блестящим Яном Цуй https://hackernoon.com/guys-were-doing-pagination-wrong-f6c18a91b232, который я очень рекомендую прочитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...