如何从DynamoDB获取具有不完整密钥或条件的项目?

问题描述 投票:0回答:2

该表有两个键:filename(分区键)和eventTime(排序键)。我需要得到filename='myfile'eventTime eventTime<certain_ddate的所有项目

我试着这样做:

response = client.batch_get_item(
    RequestItems={
        tab_name:{
            "Keys":[
                {'filename':{'S':file}, 'eventTime':{'S':et}}
            ],
            "ExpressionAttributeNames": {":et":{'S':??????}}
            "ConsistentRead":False
         }
     },
     ReturnConsumedCapacity="TOTAL"
)

我更倾向于避免使用qazxsw poi来获得成本效率,而且如果我们确实将scan值编入索引,那么为什么我们应该扫描整个表格并没有多大意义。

应该是什么而不是eventTime?我应该使用不同的东西吗?

python database amazon-web-services amazon-dynamodb
2个回答
0
投票

???将使用项目的主键为您提供一个项目(最多)。在您的情况下,主键是散列键和排序键。

如果仅在GetItem中指定哈希键,则可以返回多个项目。在您的情况下,您可以返回具有给定文件名的所有项目。

如果要使用排序键过滤查询结果,可以应用Query。在您的情况下,您可以在排序键上使用LT(小于)运算符。

编辑:你不能一次更新整个分区(文件名)。您必须使用Query获取项目,然后迭代它们并一次更新一个。


0
投票

“查询”,KeyCondition,正是您需要的操作。它将返回具有按排序键(eventtime)排序的给定分区键(在您的示例中为文件名)的所有项目,或者如果需要,仅返回排序键在给定范围内的那些项目(例如,eventTime)

© www.soinside.com 2019 - 2024. All rights reserved.