Фильтр по динамической заявке - PullRequest
0 голосов
/ 23 июня 2018

Это небольшой запрос. Я просто хочу получить те записи, которые имеют имя события = 'newevent'

как применить этот фильтр, как в документации, все запросы состоят из составных ключей, подобных этому

face = dynamodb.get_item(
                                TableName='athlete_collection',
                                Key={'RekognitionId': {'S': match['Face']['FaceId']}
                                    ,'EventName': {'S' : 'celeb'}
                                     }
                            )

но в моем случае это не составной ключ.

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете использовать API сканирования DynamodB с 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))

Все приведенные выше примеры вернут все атрибуты. Если вам нужен только определенный атрибут, используйте - проекционное выражение (в awscli) или ProjectionExpression (в SDK).

Я рекомендую вам перейти по ссылкам ниже для большей ясности и настройки:

Документ API сканирования DynamoDB

Работа с запросами DynamoDB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...