私のMovies
テーブルには、以下の項目(データ)があります。以下のクエリparams
は私のためにうまく動作します。
第3の属性をOPに追加することができます。それは正常に動作するはずです。
DynamoDBは、FilterExpression
の複合条件をサポートしています。いくつかの条件に基づいて
照会テーブル: -
var table = "Movies";
var year_val = 1991;
var title = "Movie with map attribute";
var params = {
TableName : table,
KeyConditionExpression : 'yearkey = :hkey and title = :rkey',
FilterExpression : '(records.K1 = :k1Val AND records.K2 = :k2Val) OR (records.K3 = :k3Val AND records.K4 = :k4Val)',
ExpressionAttributeValues : {
':hkey' : year_val,
':rkey' : title,
':k3Val' : 'V3',
':k4Val' : 'V4',
':k1Val' : 'V1',
':k2Val' : 'V2'
}
};
docClient.query(params, function(err, data) {
if (err) {
console.error("Unable to read item. Error JSON:", JSON.stringify(err,
null, 2));
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
}
});
マイデータ: -

結果: -
GetItem succeeded: {
"Items": [
{
"title": "Movie with map attribute",
"yearkey": 1991,
"records": {
"K3": "V3",
"K4": "V4",
"K1": "V1",
"K2": "V2"
}
}
],
"Count": 1,
"ScannedCount": 1
}
上記の条件が満たされている場合にのみ、GSI上のアイテムを望んでいることを意味しますか?これは、RDBMSのビューと非常によく似ています。 – notionquest
私は上記条件を満たすdynamobdテーブルから行を見つけようとしています。私はそれがテーブルかインデックスかどうかは気にしません。行は条件を満たす必要があります。 –