Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda DynamoDB表查询未排序_Aws Lambda_Amazon Dynamodb - Fatal编程技术网

Aws lambda DynamoDB表查询未排序

Aws lambda DynamoDB表查询未排序,aws-lambda,amazon-dynamodb,Aws Lambda,Amazon Dynamodb,我在DynamoDB中创建了一个表,该表同时具有主键(字符串)和排序键(编号)(课程课程id),我使用以下简单的Lambda函数查询课程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

我在DynamoDB中创建了一个表,该表同时具有主键(字符串)和排序键(编号)(课程课程id),我使用以下简单的Lambda函数查询课程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)
据我所知,结果应该根据排序键以数字顺序返回,但我得到以下错误:

ClientError: An error occurred (ValidationException) when calling the 
Query operation: Query condition missed key schema element: course- 
lesson
课程是主分区键的名称


关于可能的原因或修复方法有什么想法吗?

您需要为
查询操作提供主键。从:

使用
KeyConditionExpression
参数为分区键提供特定值。[…]您可以通过指定排序键值[…],选择性地缩小查询操作的范围


您不能仅通过提供排序键来使用
查询
。如果您只想根据
课程课程id
筛选大于
0
,则使用
Scan
-但是,请注意
Scan
在资源使用方面“更昂贵”,也就是说,对于大型表,它们的执行时间要长得多。

您需要为
查询操作提供主键。从:

使用
KeyConditionExpression
参数为分区键提供特定值。[…]您可以通过指定排序键值[…],选择性地缩小查询操作的范围


您不能仅通过提供排序键来使用
查询
。如果您只想根据
课程课程id
筛选大于
0
,则使用
Scan
-但是,请注意
Scan
在资源使用方面“更昂贵”,也就是说,对于大表,它们需要更长的时间来执行。

它看起来是先返回按
键排序的值,然后返回按
键排序的值。不,它不是按分区键排序,因为在执行扫描时它不用于此。它看起来是先返回按
键排序的值,然后
排序键
。不,它不是按分区键排序,因为它在执行扫描时不用于分区键。