2016-11-28 8 views
0

スキャンフィルタ式のIN句にリストを渡すことはできますか?DynamoDBスキャンフィルタ式でリストにIn句を使用できますか?

私はこのようなことをしようとしています。エラーは発生しませんが、一致する結果は得られません。

ScanSpec scanSpec = new ScanSpec().withMaxResultSize(maxResults) 
.withFilterExpression("#zipcode IN (:zipcode)") 
.withNameMap(new NameMap().with("#zipcode", "zipcode")) 
.withValueMap(new ValueMap().withList(":zipcode",Arrays.asList("12345","56789"))); 
+0

郵便番号のDynamoDBデータタイプとは何ですか。 IN句を使用して、SETデータ型(SS、NSなど)の値のみをチェックできます。 – notionquest

+0

これは文字列です。 IN句は、単一のStringと一致します。たとえば、.withString( ":zipcode"、 "56789")が動作します。 – WillHenry

答えて

0

ExpressionAttributeValuesのリストではなく、FilterExpressionに一致する値のリストをエンコードする必要があります。例:

ScanSpec scanSpec = new ScanSpec().withMaxResultSize(maxResults) 
.withFilterExpression("#zipcode IN :z1, :z2") 
.withNameMap(new NameMap().with("#zipcode", "zipcode")) 
.withValueMap(new ValueMap().withString(":z1", "12345").withString(":z2", "56789"))); 
関連する問題