我在我的Movies
表中有以下项目(即数据)。以下查询params
适合我。
您可以添加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表中找到满足上述条件的行。我不介意它是来自表格还是索引。但行应满足条件。 –