Можно ли ЗАКАЗАТЬ результаты с помощью API запросов или сканирования в DynamoDB?
Мне нужно знать, есть ли в DynamoDB что-то вроде [ORDER BY 'field'] из запросов SQL?
Благодарю.
источник
Можно ли ЗАКАЗАТЬ результаты с помощью API запросов или сканирования в DynamoDB?
Мне нужно знать, есть ли в DynamoDB что-то вроде [ORDER BY 'field'] из запросов SQL?
Благодарю.
Однако неявно, порядок, очевидно, необходим для многих реальных случаев использования и может быть смоделирован с помощью первичного ключа типа хэша и диапазона соответственно:
В этом случае первичный ключ состоит из двух атрибутов. Первый атрибут - это хэш-атрибут, а второй - атрибут диапазона. Amazon DynamoDB строит неупорядоченный хэш-индекс по атрибуту первичного ключа хэша и отсортированный индекс диапазона по атрибуту первичного ключа диапазона . [курсив мой]
Затем вы можете использовать этот индекс диапазона для необязательного запроса элементов через параметр RangeKeyCondition API запросов и указать прямой или обратный обход индекса (т. Е. Направление сортировки) через параметр ScanIndexForward .
Обновление: таким же образом можно упорядочить по атрибуту с локальным вторичным индексом .
Вы можете использовать ключ сортировки и применить параметр ScanIndexForward в запросе для сортировки в порядке возрастания или убывания. Здесь я ограничиваю количество возвращаемых предметов 1.
источник
Используйте ScanIndexForward (true для возрастания и false для убывания), а также можете ограничить результат, используя значение setLimit в Query Expression.
Ниже приведен код, в котором QueryPage использовался для поиска отдельной записи.
источник
Другой вариант, который должен решить проблему, - это
Это позволит отсортировать любое значение вашей таблицы по мере необходимости. Это очень эффективный способ найти элементы с наивысшим рейтингом в вашей таблице без необходимости получать весь запрос и затем фильтровать его.
источник
Если вы используете boto2 и у вас есть ключ сортировки в одном из столбцов вашей таблицы, вы можете отсортировать то, что вы получаете, по порядку или в обратном порядке, сказав:
Если вы используете boto3 и у вас есть ключ сортировки в столбце, по которому вы хотите отсортировать результат, вы можете отсортировать полученные данные, сказав:
Помните, что в boto3, если ScanIndexForward имеет значение true, DynamoDB возвращает результаты в том порядке, в котором они хранятся (по значению ключа сортировки). Это поведение по умолчанию. Если ScanIndexForward имеет значение false, DynamoDB считывает результаты в обратном порядке по значению ключа сортировки, а затем возвращает результаты клиенту.
источник
Если таблица уже существует, добавьте GSI (глобальный вторичный индекс) к атрибуту, который вы хотите для таблицы, и используйте запрос, а не сканирование. Если вы собираетесь создать таблицу, вы можете добавить LSI (локальный вторичный индекс) к нужному атрибуту.
источник
Никогда не думал, что такая банальная задача может превратиться в проблему в DynamoDB. Динамо требует некоторой базовой перегородки. Мне удалось упорядочить данные, добавив дополнительный статус столбца , а затем создать индекс GSI с использованием обоих полей. Я заказываю данные со статусом status = "active" по полю createdAt.
Создать GSI
данные запроса
источник