2016-09-02 14 views
0

私はdynamoDBテーブルにデータがあり、データ属性に基づいてフィルタリングしようとしています。以下はJSONデータの例です。フィルタクエリの例は、次のようになります:payload.stat> 200.dynamoDBテーブルのフィルタを設定する

しかし、DynamoDBのナビゲーションペインでこのようなクエリを使用しようとしてもうまくいかず、エラーが発生します。「アイテムは1つ以上の属性で構成されています。アイテムの読み書きに必要な属性は、主キーを構成するものだけです。

ペイロード内の属性を使用してデータをフィルタリングするにはどうすればよいですか? DynamoDBの表の

{ 
    "payload": { 
    "lock": "L1", 
    "maxtmptr": 50, 
    "serial": "SX001", 
    "stat": 255, 
    "timeover": 0.17, 
    "tmptr": 30 
    }, 
    "serial": "SX001", 
    "timestamp": "1472784542467" 
} 

スクリーンショット:

Click here for snapshot of DynamoDB Table

+0

ペイロードのデータ型は?マップとして定義されていますか? – notionquest

+0

このエラーをスローするコードを共有できますか? – Dasharath

+0

@notionquest、payloadはjsonデータです。ペイロードを定義する必要はありません。 –

答えて

2

あなたはFilterExpressionsを使用して結果を照会したり、スキャンすることができます。 dynamodbを照会するときは、パーティションキーが必要です。ダイナモブロックをスキャンするときは、パーティションキーはオプションです。しかし、スキャンはクエリよりも遅いです。

は、あなたがより多くのフィルタオプションが必要な場合は、あなたがあなたのFilterExpressionをカスタマイズすることができ、この

var params = { 
     "TableName": tableName, 
     "FilterExpression": "payload.lock = :val1 and timestamp = :val2", 
     "ExpressionAttributeValues": { 
      ":val1": "lockInput", 
      ":val1": "timestamp" 
     }, 
     "ReturnConsumedCapacity": "TOTAL" 
    }; 

で試してみてください。

関連する問題