2017-02-23 33 views
2

"timestamp"という名前の列を持つDynamoDBテーブルがあり、日付で照会しようとしています。私は列名の変更を制御できません。Amazon DynamoDBに "timestamp"(予約語)という名前の列を照会します。

var params = { 
    TableName : 'REPORT_CARD', 

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

私はエラーを取得:「ERROR:にValidationException:無効なKeyConditionExpressionを:属性名は予約語であり、予約されたキーワード:タイムスタンプ」

はほかに、「タイムスタンプ」列の名前を変更し、このための回避策はありますか?

ありがとうございました!

答えて

4

まず、テーブル「REPORT_CARD」と仮定するとtimestampとしてキーパーティションで定義され、パーティションキーでデータを照会するために(すなわち「=」)KeyConditionExpressionのみ等価演算子を使用することができます。

timestampのソートキーと定義されている場合は、BETWEENを使用できます。

キーワードエラーがある場合は、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 
    } 
関連する問題