Amazon dynamodb AWS使用映射模板中的二级索引获取查询DynamoDB的api
DyanmoDB表格详细信息 表名称:产品级 它有3列:产品(分区键)、颜色(排序键)、库存 需要仅使用颜色访问数据。为了实现这一点,我们正在创建一个关于颜色的二级索引。我想了解我们如何在api中进行更改 -它必须工作,如果我使用任何产品或颜色 目前,这是请求映射模板中的代码:Amazon dynamodb AWS使用映射模板中的二级索引获取查询DynamoDB的api,amazon-dynamodb,aws-api-gateway,Amazon Dynamodb,Aws Api Gateway,DyanmoDB表格详细信息 表名称:产品级 它有3列:产品(分区键)、颜色(排序键)、库存 需要仅使用颜色访问数据。为了实现这一点,我们正在创建一个关于颜色的二级索引。我想了解我们如何在api中进行更改 -它必须工作,如果我使用任何产品或颜色 目前,这是请求映射模板中的代码: "KeyConditionExpression": "PRODUCT = :a#if($input.params('color') != "") AND COLOR = :b#{end}", "ExpressionAtt
"KeyConditionExpression": "PRODUCT = :a#if($input.params('color') != "") AND COLOR = :b#{end}",
"ExpressionAttributeValues": {
":a": {"S": "$input.params('product')"}#if($input.params('color') != ""),
":b": {"S": "$input.params('color')"}#{end}
},
您需要在查询中指定辅助索引的名称 假设二级索引是在“颜色”上创建的,索引名称是“颜色索引” 查询应为:
{
TableName: "Product_Level",
IndexName: "COLOR-Index",
KeyConditionExpression: "COLOR = :COLOR",
ExpressionAttributeValues: {
":COLOR": COLOR
}
};
如果要使用PRODUCT进行查询并按颜色过滤,则不需要创建二级索引。此查询应适用于以下情况:
{
TableName: "Product_Level",
KeyConditionExpression: "PRODUCT = :PRODUCT",
FilterExpression: "contains (COLOR, :COLOR)",
ExpressionAttributeValues: {
":PRODUCT": PRODUCT,
":COLOR" : COLOR
}
}
因为您知道是否有“产品”和/或“颜色”(即,它们是单独的字段),所以可以使用产品分区、颜色排序和带有颜色分区的GSI存储数据。您需要根据获得的参数运行不同的查询 使用下面的数据,您可以运行以下查询以获取所需的数据
GetItem
获取“红色”“ProductA”记录如果您真的需要在一个查询中指定颜色或产品谢谢,Kevin。那么,KeyConditionExpression中的产品不是必需的?我应该能够查询使用产品也。
Partition Sort GSI_Partition Stock
ProductA Red Red ...
ProductA Blue Blue ...
ProductB Blue Blue ...