AWS DynamoDB | 如何查询两个日期之间的时间戳?

古斯塔夫·温托夫特

我与用户之间有一个表格,我想查询在fx April中创建的所有用户。

创建用户时,将自动为该用户创建一个时间戳。

我在表中创建了一个索引,其中时间戳是分区键,而id是排序键。

时间戳以Unix毫秒为单位。

这是我对此查询的代码:

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,
            }
        };

我收到以下错误:

ExpressionAttributeValues contains invalid key: Syntax error; key: "hkey"
达尼丹

您不能有条件地查询分区键。您必须指定完整的分区键值,没有任何条件。BETWEEN比较操作仅适用于有条件查询排序键。

DynamoDB文档中

您必须指定分区键名称和值作为相等条件。

您可以选择为排序键(如果存在)提供第二个条件。排序键条件必须使用以下比较运算符之一:

  • a = b —如果属性a等于值b,则为true
  • a <b —如果a小于b,则为true
  • a <= b —如果a小于或等于b,则为true
  • a> b —如果a大于b,则为true
  • a> = b —如果a大于或等于b,则为true
  • b和c之间的a —如果a大于或等于b且小于或等于c,则为true。

还支持以下功能:

  • starts_with(a,substr) —如果属性a的值以特定的子字符串开头,则为true

要获得查询一系列时间戳的能力,使用DynamoDB并非一帆风顺。一种解决方案是在您的项目中添加一个附加字段,其中仅包含时间戳的年份和月份。然后,您可以创建一个全球二级索引(GSI),其中以年-月-字段为主要关键字,并以完整时间戳为排序关键字。使用这种方法,您可以查询在给定月份创建的所有用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在AWS DynamoDb上查询Range键的最大值

来自分类Dev

使用Swift进行Amazon AWS DynamoDB查询的最佳方法?

来自分类Dev

AWS SimpleDB和DynamoDB之间的价格差异

来自分类Dev

AWS ruby sdk v2-dynamodb查询

来自分类Dev

具有多个hashKeyValues的AWS DynamoDB Swift查询

来自分类Dev

如何在python中查询AWS DynamoDB?

来自分类Dev

在AWS上使用Titan DynamoDB并从NodeJs查询

来自分类Dev

在AWS DynamoDB中按字符串数组查询

来自分类Dev

如何使用AWS DynamoDB实施国际化?

来自分类Dev

如何在AWS DynamoDB中联接表?

来自分类Dev

AWS Dynamodb:是否可以仅使用排序键进行查询

来自分类Dev

减去AWS Athena中的两个时间戳列

来自分类Dev

AWS DynamoDB DAX“ NoRouteException”

来自分类Dev

AWS DynamoDB如何计算查询的读取单位?

来自分类Dev

我应该如何修改AWS DynamoDB查询通过AWS API Gateway返回给我的响应?

来自分类Dev

AWS DynamoDB GSI查询所有分区

来自分类Dev

用于查询DynamoDB表的AWS Lambda返回NULL

来自分类Dev

带有NodeJ的AWS DynamoDB查询

来自分类Dev

AWS Lambda DynamoDB putItem始终执行两次

来自分类Dev

AWS DynamoDB:如何订购由DynamoDB Stream触发的Lambda?

来自分类Dev

在AWS CLI DynamoDB查询操作中替换变量值

来自分类Dev

使用Ruby查询AWS DynamoDB

来自分类Dev

在AWS上使用Titan DynamoDB并从NodeJs查询

来自分类Dev

缩短AWS Dynamodb的响应时间

来自分类Dev

AWS Dynamodb读取容量查询

来自分类Dev

AWS DynamoDB加密-Ruby

来自分类Dev

如何将时间戳消息从 aws iot 按钮存储到 DynamoDB

来自分类Dev

如何使用 AWS DynamoDB 和 AWS SQS 创建作业队列?

来自分类Dev

AWS DynamoDB 表结构