【问题标题】:Query an Amazon DynamoDB by column named "timestamp" (a reserved word)按名为“timestamp”(保留字)的列查询 Amazon DynamoDB
【发布时间】:2017-07-14 11:44:12
【问题描述】:

我有一个名为“timestamp”的列的 DynamoDB 表,并且正在尝试按日期查询。我无法控制更改列名。

var params = {
    TableName : 'REPORT_CARD',

    KeyConditionExpression: "timestamp BETWEEN :startDate AND :endDate",
    ExpressionAttributeValues: {
        ":startDate": ""+startDate,
        ":endDate": ""+endDate
    }     
}

我得到错误:

错误:ValidationException:无效的 KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳

除了重命名“时间戳”列之外,还有其他解决方法吗?

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    首先,假设'REPORT_CARD'表是用分区键定义为timestamp,你只能使用等号运算符(即'=') KeyConditionExpression 中按分区键查询数据。

    如果timestamp 在表格中定义为排序键,您可以使用BETWEEN

    关于关键字错误,您可以使用ExpressionAttributeNames 提供属性名称timestamp。下面的例子:-

    var params = {
        TableName: 'REPORT_CARD',
    
        KeyConditionExpression: "parition_key_attr = :partition_val AND #timestamp BETWEEN :startDate AND :endDate",
        ExpressionAttributeNames: { "#timestamp": "timestamp" },
        ExpressionAttributeValues: {
            ':partition_val': "somevalue",
            ":startDate": startDate,
            ":endDate": endDate
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2015-07-20
      相关资源
      最近更新 更多