amazon-web-services - 过滤 dynamodb 语句
问题描述
这是一个小查询,我只想获取那些具有事件名称 = 'newevent' 的记录
如何在文档中应用此过滤器所有查询都是这样的复合键
face = dynamodb.get_item(
TableName='athlete_collection',
Key={'RekognitionId': {'S': match['Face']['FaceId']}
,'EventName': {'S' : 'celeb'}
}
)
但在我的情况下,它不是复合键。
解决方案
您可以将 dynamodb 扫描 API 与FilterExpression一起使用。请参阅以下示例:
AWSCLI:
aws dynamodb scan --table-name sample --filter-expression "eventname = :val" --expression-attribute-values '{":val":{"S":"newevent"}}' --region us-west-1
输出:
{
"Count": 1,
"Items": [
{
"eventname": {
"S": "myname"
},
"id": {
"N": "4"
},
"value": {
"S": "value4"
}
}
],
"ScannedCount": 5,
"ConsumedCapacity": null
}
Boto3 SDK:
import boto3
import json
client = boto3.client('dynamodb', region_name='us-west-1')
response = client.scan(
TableName="sample",
FilterExpression="eventname = :val",
ExpressionAttributeValues={
":val":{
"S":"myname"
}
}
)
print(json.dumps(response, indent=True))
上面提供的所有示例都将返回所有属性。如果您只需要特定属性,请使用--projection-expression(在 awscli 中)或ProjectionExpression(在 SDK 中)。
我建议您浏览以下文档链接以获得更清晰和自定义:
推荐阅读
- bash - bash syntax for regular expression
- c - execv 到 .c prog 使用相同的管道
- php - php搜索html表单变量名显示在web url上
- r - R Studio 中的 ROAuth 过程中没有 PIN
- flutter - 如何在 Firestore 上使用 startAfter?
- node.js - 猫鼬 findByIdAndUpdate 不更新我的 mongoDB
- javascript - 当在不同的选择中选择一个选项时,有没有办法显示/隐藏某些选项并在选择中显示/隐藏其他选项?
- python - 从服务器收集目录结构和文件名,而不是文件内容
- maven - 尝试 mvn 包时,Docker 使用 Maven 构建错误
- cordova - File.readAsDataURL 承诺未完成