Amazon web services AWS DynamoDB |如何查询两个日期之间的时间戳?
我有一个包含用户的选项卡,我希望查询在f.x April中创建的所有用户 创建用户时,会自动为该用户创建时间戳 我在表中创建了一个索引,时间戳作为分区键,id作为排序键 时间戳以秒为单位 这是我的查询代码:Amazon web services AWS DynamoDB |如何查询两个日期之间的时间戳?,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我有一个包含用户的选项卡,我希望查询在f.x April中创建的所有用户 创建用户时,会自动为该用户创建时间戳 我在表中创建了一个索引,时间戳作为分区键,id作为排序键 时间戳以秒为单位 这是我的查询代码: GetUsersOnTimestamp(): Promise<any> { return new Promise( (resolve, reject) => { const _dynamoDB = new AWS.DynamoDB.Document
GetUsersOnTimestamp(): Promise<any> {
return new Promise( (resolve, reject) => {
const _dynamoDB = new AWS.DynamoDB.DocumentClient();
const startDate = 1554069600000;
const endDate = 1556661600000;
const params = {
TableName: 'user-table',
IndexName: 'timestamp-id-index',
KeyConditionExpression: '#timestamp = :hkey BETWEEN :sdate AND :edate',
ExpressionAttributeNames: {
'#timestamp': 'timestamp'
},
ExpressionAttributeValues: {
':hkey': 'timestamp',
':sdate': startDate,
':edate': endDate,
}
};
您不能有条件地查询分区密钥。必须无条件地指定完整分区键值。BETWEEN comparison运算符仅可用于有条件地查询排序键 从: 必须将分区键名称和值指定为相等项 条件 如果需要,可以选择为排序键提供第二个条件 目前排序键条件必须使用以下条件之一 比较运算符: a=b—如果属性a等于值b,则为true a
要获得查询一系列时间戳的能力,使用DynamoDB并不能直接实现。一种解决方案是在项目中添加一个额外的字段,该字段只包含时间戳的年份和月份。然后,您可以创建一个全局二级索引GSI,其中年-月字段作为主键,完整时间戳作为排序键。使用这种方法,您可以查询在给定月份创建的所有用户。您不能有条件地查询分区密钥。必须无条件地指定完整分区键值。BETWEEN comparison运算符仅可用于有条件地查询排序键 从: 必须将分区键名称和值指定为相等项 条件 如果需要,可以选择为排序键提供第二个条件 目前排序键条件必须使用以下条件之一 比较运算符: a=b—如果属性a等于值b,则为true a
要获得查询一系列时间戳的能力,使用DynamoDB并不能直接实现。一种解决方案是在项目中添加一个额外的字段,该字段只包含时间戳的年份和月份。然后,您可以创建一个全局二级索引GSI,其中年-月字段作为主键,完整时间戳作为排序键。使用这种方法,您可以查询给定月份创建的所有用户。谢谢您的回答。我制作了一个GSI,id作为PartitionKey,时间戳作为SortKey。我得到以下错误:查询条件缺少键模式元素:id不使用PartitionKey是否不可能执行查询?如我的回答中所述,查询数据库时始终需要指定分区键。这就是为什么我建议您创建一个GSI,将时间戳中的年和月组合作为分区键。我还创建了另一个GSI,时间戳编号作为分区键,没有排序键,但得到以下错误:不支持查询键条件。为什么呢?我查询PartitionKey,参数都是真的对不起这些愚蠢的问题,我对DynamoDB很陌生。我可以在我的问题中看到你的答案,所以忽略它。谢谢你的帮助。真烦人,你不能单独向Partitinkey提问,尽管谢谢你的回答。我制作了一个GSI,id作为PartitionKey,时间戳作为SortKey。我得到以下错误:查询条件缺少键模式元素:id不使用PartitionKey是否不可能执行查询?如我的回答中所述,查询数据库时始终需要指定分区键。这就是为什么我建议您创建一个GSI,将时间戳中的年和月组合作为分区键。我还创建了另一个GSI,时间戳编号作为分区键,没有排序键,但得到以下错误:不支持查询键条件。为什么呢?我查询PartitionKey,参数都是真的对不起这些愚蠢的问题,我对DynamoDB很陌生。我可以在我的问题中看到你的答案,所以忽略它。谢谢你的帮助。但是,你不能单独从Partitinkey那里查询,这真的很烦人
ExpressionAttributeValues contains invalid key: Syntax error; key: "hkey"