DynamoDB Table Query Not Sorting - PullRequest
       2

DynamoDB Table Query Not Sorting

0 голосов
/ 24 февраля 2020

Я создал таблицу в DynamoDB, в которой есть и первичный ключ (строка), и ключ сортировки (число) (идентификатор-урока курса), и я использую следующую простую лямбда-функцию для запроса таблицы, в которой ID урока> 0:

import json
import boto3
from boto3.dynamodb.conditions import Key, Attr

#always start with the lambda_handler
def lambda_handler(event, context):

    # make the connection to dynamodb
    dynamodb = boto3.resource('dynamodb')

    # select the table
    table = dynamodb.Table("table-name")

    response = table.query(
    KeyConditionExpression=Key('course-lesson-id').gt(0)
    )
    items = response['Items']
    print(items)

Насколько я понимаю, результаты должны возвращаться в порядке номеров 1010 * на основе ключа сортировки, но я получаю следующую ошибку:

ClientError: An error occurred (ValidationException) when calling the 
Query operation: Query condition missed key schema element: course- 
lesson

курс-урок - это имя первичного ключа раздела.

Есть мысли о возможных причинах или исправлениях?

1 Ответ

2 голосов
/ 24 февраля 2020

Вам необходимо предоставить первичный ключ для операции Query. Из Query docs :

Используйте параметр KeyConditionExpression, чтобы указать значение c для ключа раздела . [...] Вы можете опционально сузить область действия операции запроса, указав ключ сортировки значение [...]

Вы можете ' Query можно использовать только с помощью ключа сортировки. Если вы хотите запрашивать только на основе фильтрации course-lesson-id больше 0, используйте Scan - однако позаботьтесь о том, чтобы Scan были «более дорогими» с точки зрения использования ресурсов, то есть для больших таблицы, которые они выполняют намного дольше.

...