Amazon web services 如果我想通过这些字段进行搜索,我应该如何将其存储在DynamoDB中?
我有一个DynamoDB表,其中包含以下键:Amazon web services 如果我想通过这些字段进行搜索,我应该如何将其存储在DynamoDB中?,amazon-web-services,nosql,amazon-dynamodb,Amazon Web Services,Nosql,Amazon Dynamodb,我有一个DynamoDB表,其中包含以下键: id(值是uuid)-这是主键 some\u other\u字段-只是一个常规键 我希望能够查询DynamoDB以获取some\u other\u字段等于某个值的项 要做到这一点,some\u other\u字段是否需要是排序键 我是否可以将其存储为文档项而不是键值项?但是,我没有找到如何执行此操作的文档。我猜您有一个DynamoDB表(不是项),其中包含键: id-string-称之为分区键或散列键 some_other_字段-string |
id
(值是uuid)-这是主键
some\u other\u字段
-只是一个常规键
我希望能够查询DynamoDB以获取some\u other\u字段
等于某个值的项
要做到这一点,some\u other\u字段
是否需要是排序键
我是否可以将其存储为文档项而不是键值项?但是,我没有找到如何执行此操作的文档。我猜您有一个DynamoDB表(不是项),其中包含键:
-string-称之为分区键或散列键id
-string | number | blob-如果它不在键中,则称它为排序键或范围键或正则列some_other_字段
some\u other\u字段
和投影:KEYS\u ONLY
您可以使用some\u other\u field=VALUE
查询项目的索引。因此,您永远不会扫描整个表,您只会得到您需要的
这不是唯一的解决方案,您还可以使用筛选器表达式扫描表以保留与条件匹配的项,但这比上面的解决方案更昂贵,因为它总是扫描所有表
// There may be some small errors in names, consider that code a hint ;)
const params = {
TableName: 'MY_TABLE_NAME',
IndexName: 'MY_INDEX_NAME',
KeyConditionExpression: '#pk = :pk',
ExpressionAttributeNames: {
'#pk': 'some_other_field', // GSI partition key
},
ExpressionAttributeValues: {
':pk': MY_VALUE,
},
}