dynamo db クエリ式を使用してプログラムで dynamo db をクエリする必要があるユースケースがあります。たとえば、A と B の 2 つの属性があり、 のようなフィルター式が必要だとします(A='Test' OR A ='Test1') and B='test2'
。
これに関連して検索しましたが、有用なリソースが見つかりません。私はdynamo dbが初めてです。
dynamo db クエリ式を使用してプログラムで dynamo db をクエリする必要があるユースケースがあります。たとえば、A と B の 2 つの属性があり、 のようなフィルター式が必要だとします(A='Test' OR A ='Test1') and B='test2'
。
これに関連して検索しましたが、有用なリソースが見つかりません。私はdynamo dbが初めてです。
それはあなたが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);
A と B がキー属性である場合は、それらを KeyConditionExpression で指定します。それ以外の場合はすべて FilterExpression に入ります。
主な違いは、名前が示すようにキー式がキー属性に適用され、料金が発生するためレコードがフェッチされるのに対し、フィルター式は自由になり、それらのレコードをフェッチした後に適用され、フィルター条件レコードに一致するもののみを返すことです。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html