我正在使用python boto3来处理dynamodb。我使用以下脚本创建了一个表:
cls.table = dynamodb.create_table(
TableName='table-unittest',
KeySchema=[
{
'AttributeName': 'id',
'KeyType': 'HASH',
},
{
'AttributeName': 'user_name',
'KeyType': 'RANGE',
}
],
AttributeDefinitions=[
{
'AttributeName': 'id',
'AttributeType': 'N',
},
{
'AttributeName': 'user_name',
'AttributeType': 'S',
},
{
'AttributeName': 'age',
'AttributeType': 'N',
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 2,
'WriteCapacityUnits': 2,
},
GlobalSecondaryIndexes=[
{
'IndexName': 'age-index',
'KeySchema': [
{
'AttributeName': 'age',
'KeyType': 'HASH',
},
],
'Projection': {
'ProjectionType': 'KEYS_ONLY',
},
'ProvisionedThroughput': {
'ReadCapacityUnits': 2,
'WriteCapacityUnits': 2,
}
},
],
)
但是,当通过age-index
全局二级索引查询表时,我收到以下消息:
Query condition missed key schema element: age
这是我传递给boto3查询方法的参数:
{
'ConsistentRead': False,
'IndexName': 'age-index',
'QueryFilter': {
'age': {
'ComparisonOperator': 'GT',
'AttributeValueList': [18]
}
},
'TableName': 'table-unittest',
'ScanIndexForward': False,
'KeyConditions': {
'id': {
'ComparisonOperator': 'EQ',
'AttributeValueList': [222]
}
}
}
答案 0 :(得分:0)
您无法使用表哈希键作为条件(id)
来查询全局二级索引你只能: