我编写了一些python代码,我想通过sort键查询dynamoDB数据。 我记得我可以成功使用后续代码:
table.query(KeyConditionExpression=Key('event_status').eq(event_status))
我的表格结构列
primary key:event_id
sort key: event_status
答案 0 :(得分:4)
如果您想在不使用Hash Key属性值的情况下从DynamoDB获取数据,则应使用扫描API。
示例: - 强>
fe = Attr('event_status').eq("new");
response = table.scan(
FilterExpression=fe
)
for i in response['Items']:
print(json.dumps(i, cls=DecimalEncoder))
while 'LastEvaluatedKey' in response:
response = table.scan(
FilterExpression=fe,
ExclusiveStartKey=response['LastEvaluatedKey']
)
for i in response['Items']:
print(json.dumps(i, cls=DecimalEncoder))
答案 1 :(得分:3)
您必须为sort键创建一个二级索引,以便单独查询。
答案 2 :(得分:0)
注意::此处 LastUpdated 是排序键
示例:
from_date = "fromdate"
to_date = "todate"
dynamodb = boto3.resource('dynamodb', region_name='ap-south-1')
table = dynamodb.Table("your-tablename")
response =table.scan(
FilterExpression=Attr('LastUpdated').between(from_date,to_date))
)
result = response['Items']
答案 3 :(得分:0)
dynamodb中的查询只能使用主键完成
dynamodb = boto3.resource('dynamodb', region_name='your region name')
table = dynamodb.Table('database-dev')
response = table.query(KeyConditionExpression=Key('your primary key').eq("condition"))
但是,如果您的主键同时包含哈希键和排序键,那么我们可以像这样使用哈希键
dynamodb = boto3.resource('dynamodb', region_name='your region name')
table = dynamodb.Table('database-dev')
response = table.query(KeyConditionExpression=Key('your primary key').eq("condition"))