Требуется проверить базу данных Dynamo, имеющую записи со списком объектов словаря.Ниже приведены мои примеры данных
'toAddr': [{'type': 'email', 'address': 'aaa@gmail.com'}, {'type': 'email', 'address': 'bbb@gmail.com'}]}
Ниже строки кода будут мне полезны.
client = boto3.resource('dynamodb')
table = client.Table(table_name)
response = table.scan(FilterExpression="contains (#items, :itemVal)",
ExpressionAttributeNames={"#items": "toAddr"},
ExpressionAttributeValues={":itemVal":{"address":"aaa@gmail.com",
type":"email"}})
Однако я хотел бы построить выражение фильтра в формате ниже
response = table.scan(FilterExpression=Attr('toAddr').contains('itemVal'),
ExpressionAttributeValues={":itemVal":{"address":"aaa@gmail.com",
"type":"email"}})
Но это приведет к ошибке
botocore.exceptions.ClientError: Произошла ошибка (ValidationException) при вызове операции сканирования: значение, предоставленное в ExpressionAttributeValues, не используется в выражениях: keys: {: itemVal}