Amazon web services 如何查询DynamoDB表以仅检索字符串集属性中具有特定值的项?

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),但它似乎不可能以我想要的方式创建,还

“我的表”中的项具有string set类型的属性。我将继续使用文档中的示例,并将集合称为“颜色”。如名称所示,集合包含表示每个项目中颜色的各种字符串。这看起来像

现在我想查询表,以便检索集合中特定颜色的所有项目。因此,关于所附图片,我想查询颜色“绿色”,并希望收到项目Picture2和Picture3

有办法做到这一点吗


由于所有可能的颜色和项目数量巨大,加上只有极少量的颜色与项目相关,因此
扫描将非常低效。到目前为止,我试图创建一个全局二级索引(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);
});
根据,不能使用集合作为主键来构建索引

索引的键架构。索引键架构中的每个属性都必须是字符串、数字或二进制类型的顶级属性。不允许使用其他数据类型,包括文档和集合


好的,谢谢。你提到的文档中我遗漏了这一段。