我希望你能使用AWS SDK for Ruby V2通过哈希键和范围键查询DynamoDB表。以下代码可以正常工作。
但是,我想将多个项目设置为范围键条件。
就像这样:
dynamodb = Aws::DynamoDB::Client.new(region: 'somewhere')
dynamodb.query(
table_name: TABLE_NAME,
key_conditions: {
HASH_KEY_NAME => {
attribute_value_list: ['hoge'],
comparison_operator: 'EQ'
},
RANGE_KEY_NAME => {
attribute_value_list: ['foo'],
comparison_operator: 'EQ'
}
}
)
但是,我想将多个项目设置为范围键条件。
就像这样:
dynamodb = Aws::DynamoDB::Client.new(region: 'somewhere')
dynamodb.query(
table_name: TABLE_NAME,
key_conditions: {
HASH_KEY_NAME => {
attribute_value_list: ['hoge'],
comparison_operator: 'EQ'
},
RANGE_KEY_NAME => {
attribute_value_list: ['foo', 'bar'],
comparison_operator: 'EQ'
}
}
)
这段代码返回 lib/ruby/gems/2.2.0/gems/aws-sdk-core-2.0.48/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': 一个或多个参数值无效:对于 EQ ComparisonOperator,参数数量无效 (Aws::DynamoDB::Errors::ValidationException)
。
我尝试使用了 IN
运算符。
dynamodb = Aws::DynamoDB::Client.new(region: 'somewhere')
dynamodb.query(
table_name: TABLE_NAME,
key_conditions: {
HASH_KEY_NAME => {
attribute_value_list: ['hoge'],
comparison_operator: 'EQ'
},
RANGE_KEY_NAME => {
attribute_value_list: ['foo', 'bar'],
comparison_operator: 'IN'
}
}
)
它返回 lib/ruby/gems/2.2.0/gems/aws-sdk-core-2.0.48/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': 尝试的条件约束不是可索引操作 (Aws::DynamoDB::Errors::ValidationException)
。
如何通过一个哈希键和多个范围键查询DynamoDB表?
KeyConditions
不支持IN
运算符。请参考这个问题中的我的回答。 - mkobitquery
方法不能将多个范围键设置为查询条件吗? - necojackarc