2016-11-28 21 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子句將匹配單個字符串。例如,.withString(「:zipcode」,「56789」)將起作用。 – WillHenry

回答

0

您需要對要在FilterExpression中匹配的值列表進行編碼,而不是將其作爲ExpressionAttributeValues中的列表進行編碼。例如:

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"))); 
相關問題