【发布时间】:2020-09-01 15:58:38
【问题描述】:
我对 DynamoDB 上的查询/扫描中的 Limit 有疑问。
我的表有 1000 条记录,对所有记录的查询返回 50 个值,但如果我将 Limit 设为 5,这并不意味着查询将返回前 5 个值,它只是说查询表上的 5 个项目(以任何顺序,所以它们可能是非常旧的项目或新项目),所以我有可能在查询中得到 0 个项目。怎样才能真正得到一个查询的最新 5 项呢?我需要将Limit 设置为 5(数字是示例),因为查询/扫描比这更多的项目会很昂贵。
查询有这个输入
{
TableName: 'transactionsTable',
IndexName: 'transactionsByUserId',
ProjectionExpression: 'origin, receiver, #valid_status, createdAt, totalAmount',
KeyConditionExpression: 'userId = :userId',
ExpressionAttributeValues: {
':userId': 'user-id',
':payment_gateway': 'payment_gateway'
},
ExpressionAttributeNames: {
'#valid_status': 'status'
},
FilterExpression: '#valid_status = :payment_gateway',
Limit: 5
}
我的表的索引是这样的:
我是否应该使用第二个索引或其他东西,使用字段createdAt 对它们进行排序,但是,我如何确定查询将查看所有项目?
【问题讨论】:
标签: amazon-dynamodb dynamodb-queries