私はこのデータを格納するDynamoDBテーブルを持っています。 「デバイス」は、パーティション・キーと「日時」ソートキーである配列内のネストされた属性に基づくフィルタ式 - DynamoDB
。 私は、PartitionKeyと日付の範囲(ソートキー)に基づいてデータを照会することができます。しかし今、私は配列である "データ"の内側にある "終点"に基づいてフィルタリングする必要があります。たとえば、エンドポイント1がデータ配列に存在する場合、またはエンドポイントIN(1,3)が存在する場合などにのみ、データを取得したいと考えています。 次のコードを使用しています。
var dev = event.params.querystring.device;
var from = event.params.querystring.from;
var to = event.params.querystring.to;
var ascord = event.params.querystring.ascord;
var limit = event.params.querystring.limit;
var qryParams = {
TableName : "mytable",
KeyConditionExpression: "#id = :dddd and #tm between :time1 and :time2",
FilterExpression: "data.endpoint = :ep",
ExpressionAttributeNames:{
"#id": "device",
"#tm": "datetime"
},
ExpressionAttributeValues: {
":dddd": dev,
":time1": from,
":time2": to,
":ep": 1
}
};
docClient.query(qryParams, function(err, data){
if (err){
callback(err, null);
}else {
callback(null, data);
}
})
しかし、それはすべてのレコードを取得しません。また、プレースホルダ(#data。#endpoint)を使用しようとしましたが動作しませんでした。 正しい方法は何でしょうか? また、エンドポイントのテーブルにインデックスを作成する必要がありますか?
ありがとうございました。よろしくお願いいたします。 よろしくお願いします。 Gus