Amazon web services 如何查询DynamoDB表以仅检索字符串集属性中具有特定值的项?
“我的表”中的项具有string set类型的属性。我将继续使用文档中的示例,并将集合称为“颜色”。如名称所示,集合包含表示每个项目中颜色的各种字符串。这看起来像 现在我想查询表,以便检索集合中特定颜色的所有项目。因此,关于所附图片,我想查询颜色“绿色”,并希望收到项目Picture2和Picture3 有办法做到这一点吗Amazon web services 如何查询DynamoDB表以仅检索字符串集属性中具有特定值的项?,amazon-web-services,nosql,amazon-dynamodb,dynamodb-queries,Amazon Web Services,Nosql,Amazon Dynamodb,Dynamodb Queries,“我的表”中的项具有string set类型的属性。我将继续使用文档中的示例,并将集合称为“颜色”。如名称所示,集合包含表示每个项目中颜色的各种字符串。这看起来像 现在我想查询表,以便检索集合中特定颜色的所有项目。因此,关于所附图片,我想查询颜色“绿色”,并希望收到项目Picture2和Picture3 有办法做到这一点吗 由于所有可能的颜色和项目数量巨大,加上只有极少量的颜色与项目相关,因此扫描将非常低效。到目前为止,我试图创建一个全局二级索引(GSI),但它似乎不可能以我想要的方式创建,还
由于所有可能的颜色和项目数量巨大,加上只有极少量的颜色与项目相关,因此
扫描将非常低效。到目前为止,我试图创建一个全局二级索引(GSI),但它似乎不可能以我想要的方式创建,还是我错了?除非您搜索的字段内置在主键或二级索引中,扫描将是您唯一的选择
scan
操作将允许您使用contains
关键字搜索集合
let params = {
TableName : 'TABLE_NAME',
FilterExpression: "contains(#color, :color)",
ExpressionAttributeNames: {
"#color": "color",
},
ExpressionAttributeValues: {
":color": "Blue",
}
};
documentClient.scan(params, function(err, data) {
console.log(data);
});
根据,不能使用集合作为主键来构建索引
索引的键架构。索引键架构中的每个属性都必须是字符串、数字或二进制类型的顶级属性。不允许使用其他数据类型,包括文档和集合
好的,谢谢。你提到的文档中我遗漏了这一段。