Używam gem aws-sdk-ruby kwerendy tabelę, która wygląda mniej więcej tak:Dynamodb: Zapytania tabele z indeksem wtórnym
hk (Hashkey) | guid(Rangekey) | Timestamp (Secondary Range index) | other attributes
aaaa | 50 | 2013-02-04T12:33:00Z |
aaaa | 244 | 2013-04-22T04:54:00Z |
aaaa | 342 | 2013-05-18T06:52:00Z |
bbbb | 243 | 2013-06-21T13:17:00Z |
Co staram się zrobić, to wszystkie „aaaa” wiersze, które zostały utworzone po pewna data. Ex:
AWS.config(access_key_id: 'xxx', secret_access_key: 'xxx', :dynamo_db => { :api_version => '2012-08-10' })
client = AWS::DynamoDB::Client.new
client.query(
{
table_name: 'table',
select: 'ALL_ATTRIBUTES',
key_conditions: {
'hk' => {
comparison_operator: 'EQ',
attribute_value_list: [
{'s' => 'aaaa'}
]
},
'timestamp' => {
comparison_operator: 'GE',
attribute_value_list: [
{'s' => Time.now.utc.iso8601}
]
}
}
})
kiedy uruchomić powyższy kod i uzyskać w ten sposób:
Query condition missed key schema element guid (AWS::DynamoDB::Errors::ValidationException)
Uruchamianie kwerendy z hashKey i RangeKey działa, ale kiedy wymienić rangeKey z wtórnym indeksu zakres to nie mówi mi, że rangeKey jest wymagany.
Jeśli następnie dodać klucz range (co sprawia, że nie ma sensu) pojawia się następujący błąd zamiast:
Conditions can be of length 1 or 2 only (AWS::DynamoDB::Errors::ValidationException)
ktoś wie co może się dziać?
Proszę odnieść się do tego postu http://stackoverflow.com/questions/21515765/retrieve-all-items-from-dynamodb-using-query –