2017-02-23 57 views
2

我有一个列名为“timestamp”的DynamoDB表,并试图按日期查询。我无法控制更改列名称。按名为“timestamp”(保留字)的列查询Amazon DynamoDB

var params = { 
    TableName : 'REPORT_CARD', 

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

我得到的错误:“ERROR:ValidationException:无效KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳”

是否有此除了重命名“时间戳”列中的解决方法吗?

谢谢!

回答

4

首先,假设表“REPORT_CARD”分区键timestamp限定,可以使用仅平等运算符(即,“=”)KeyConditionExpression由分区键查询数据。

您可以使用BETWEEN如果timestamp被定义为排序表中的关键

注册关键字错误,可以使用ExpressionAttributeNames提供属性名称timestamp。示例如下: -

var params = { 
    TableName: 'REPORT_CARD', 

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