如何使用GSI Index和FilterExpression查询AWS DynamoDb



我的DynamoDB数据库表如下。它有主键(ID)和排序键(receivedTime)。

ID(primary key)   receivedTime(sort key)     Data
ID1               1670739188                  3
ID2               1670723198                  5
ID2               1674785188                  7
ID3               1670721388                  5

我要查询的ID和接收时间范围:-
示例:
ID - ID2,
范围- 1670723188至1673723188

我创建了GSI索引,主键是ID。我写这样的查询代码,

ID const params = {
IndexName: 'Query-ID-index',
KeyConditionExpression: '#ID = :ID',
FilterExpression:
'#receivedTime BETWEEN :startTime AND :endTime ',
ExpressionAttributeNames: {
'#ID': 'ID',
'#receivedTime': 'receivedTime',
},
ExpressionAttributeValues: {
':ID': id,
':startTime': startTime,
':endTime': endTime,
},
TableName: 'tableName',
};
const data = await docClient.query(params).promise();

但数据。项为空。任何人都可以帮忙解决。

为什么需要索引?执行主表中的Query:

const params = {
KeyConditionExpression: '#ID = :ID AND #receivedTime BETWEEN :startTime AND :endTime',
ExpressionAttributeNames: {
'#ID': 'ID',
'#receivedTime': 'receivedTime',
},
ExpressionAttributeValues: {
':ID': id,
':startTime': startTime,
':endTime': endTime,
},
TableName: 'tableName',
};
const data = await docClient.query(params).promise();

最新更新