python - 如何使用 Python 查询 DynamoDB 中列表字段中的项目?
问题描述
我有一个表,其中包含具有以下属性的项目:
{
"country": "USA",
"names": [
"josh",
"freddy"
],
"phoneNumber": "123",
"userID": 0
}
我正在尝试通过使用 python 查找名称来查询 DynameDB 中的项目。所以我会在我的代码中写下我需要的项目"freddy"
在字段中"names"
。
我看到很多论坛都提到"contains"
但没有一个显示一个例子......
我当前的代码如下:
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.query(
FilterExpression: 'names = :name',
ExpressionAttributeValues: {
":name": "freddy"
}
)
我显然不能使用它,因为"names"
它是一个列表而不是一个字符串字段。我怎样才能"freddy"
在里面找names
?
解决方案
由于names
字段不是主键的一部分,因此您不能使用query
. 查找项目的唯一方法names
是使用scan
.
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users_table')
data = table.scan(
FilterExpression=Attr('names').contains('freddy')
)
推荐阅读
- r - 如何将列表值存储到矩阵中
- sql - 如何在 SQL 数据库中组织 10.000 个不同大小的表
- android - 反应原生构建开始失败,因为 Gradle 找不到找不到 play-services-basement
- javascript - jsPlumb - 禁用端点拖动
- facebook-graph-api - Facebook Graph API:page_fans_online,将日期本地化到企业所在的位置
- python - 如何在 python 的变量中存储 aws 组织单元 ID 和 scp 策略 ID?
- sql - 如何使用 `jsonb_build_object` 创建具有聚合函数和动态键值的嵌套 JSON 返回
- ios - ionic 3 - iOS 策略位置权限模式警报消息
- c++ - 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- react-native - ReactNative componentDidMount 没有被调用