我的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();