Amazon web services 如果我想通过这些字段进行搜索,我应该如何将其存储在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 |

我有一个DynamoDB表,其中包含以下键:

id
(值是uuid)-这是主键

some\u other\u字段
-只是一个常规键

我希望能够查询DynamoDB以获取
some\u other\u字段
等于某个值的项

要做到这一点,
some\u other\u字段
是否需要是排序键


我是否可以将其存储为文档项而不是键值项?但是,我没有找到如何执行此操作的文档。

我猜您有一个DynamoDB表(不是项),其中包含键:

  • id
    -string-称之为分区键或散列键
  • some_other_字段
    -string | number | blob-如果它不在键中,则称它为排序键或范围键或正则列
无论您的情况如何,我都会使用分区键定义一个全局二级索引:
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,
  },
}