【问题标题】:Querying dynamodb with begins_with使用 begins_with 查询 dynamodb
【发布时间】:2023-02-20 17:52:26
【问题描述】:

如何使用 dataset_id 和 image_name 查询 dynamodb。使用下面的代码:

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('table_name') 
response = table.query(
           IndexName='dataset_id',
           KeyConditionExpression='dataset_id = :value AND begins_with (image_name, :name)',
           ExpressionAttributeValues={
              ':value': str(dataset_id),
              ':name': {'S', 'a'}
           },
           Limit=int(results_per_page)

这是我的 dynamodb GSI。

dymamodb GSIs

我在这里做错了什么?

我期待 dynamodb 响应返回以“a”开头的图像。

【问题讨论】:

    标签: amazon-dynamodb boto3


    【解决方案1】:

    首先,我假设您的 GSI 名为dataset_id,其分区键为dataset_id,其排序键为image_name,如果此假设为假,则您的用例无效。

    现在我看到的问题是,您使用的是 Resource 客户端,它使用本机 JSON 而不是 DDB-JSON,因此您的查询应如下所示:

    response = table.query(
               IndexName='dataset_id',
               KeyConditionExpression='dataset_id = :value AND begins_with (image_name, :name)',
               ExpressionAttributeValues={
                  ':value': str(dataset_id),
                  ':name': 'a'
               },
               Limit=int(results_per_page))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2018-09-20
      相关资源
      最近更新 更多