2016-12-20 10 views
1

ダイナモdbクエリ式を使用してダイナモdbにプログラム的にクエリを行う必要があるユースケースがあります。 e.xにAとBの2つの属性があり、フィルタ式を(A='Test' OR A ='Test1') and B='test2'としたいとします。ダイナモdbのフィルタ式のOR条件

私はこれに関連して検索しましたが、役に立つリソースは見つかりませんでした。 私はdynamo dbを初めて使用しています。

+0

読み、理解するには

。つまり、テーブルのパーティションキーとソートキーは何ですか?また、あなたが使っているプログラミング言語を教えてください。 – notionquest

答えて

1

あなたのAとBは、あなたがKeyConditionExpression他のすべてでそれらを指定するキー属性である場合は、Java

Table table = dynamoDB.getTable(tableName); 
QuerySpec spec = new QuerySpec() 
    // .withKeyConditionExpression("partitionKey = :id and sortKey > :range") // In case filter expression is on key attributes 
    .withFilterExpression("(A = :a1 or A = :a2) and B = :b") 
    .withValueMap(new ValueMap() 
     //.withString(":id", "Partition key value") 
     //.withString(":range", 100) 
     .withString(":a1", "Test") 
     .withString(":a2", "Test1") 
     .withString(":b", "test2")) 
    // .withConsistentRead(true); 

ItemCollection<QueryOutcome> items = table.query(spec); 

でそれを行う方法ザッツはFilterExpressionになります。

主な相違点キー表現は、名前が示すようにキー属性に適用され、取得したレコードは料金が発生するために取得されますが、フィルタ式はフリーになり、それらのレコードをフェッチした後に適用され、条件レコード。より多くの属性AまたはBのどちらかが、パーティション・キーである http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html