包含特殊字符的aws dynamodb查询属性值?
aws dynamodb query attribute value that contains special character?
属性itemJson存储如下
"itemJson": {
"S": "{\"sold\":\"3\",\"listingTime\":\"20210107211621\",\"listCountry\":\"US\",\"sellerCountry\":\"US\",\"currentPrice\":\"44.86\",\"updateTime\":\"20210302092220\",\"itemLocation\":\"Miami,FL,USA\",\"listType\":\"FixedPrice\",\"categoryName\":\"Machines\",\"itemID\":\"293945109477\",\"sellerID\":\"holiday_for_you\",\"s3Key\":\"US/2021/2/FixedPrice/293945109477.json\",\"visitCount\":\"171\",\"createTime\":\"20210201233158\",\"listingStatus\":\"Completed\",\"endTime\":\"2021-02-28T20:22:57\",\"currencyID\":\"USD\"}"
},
我想用 filter:contains(itemJson, "sold":"0") 和 java sdk 查询,我试过这些语法,都失败了
expressionValues.put(":v2", AttributeValue.builder().s("\\"sold\\":\\"0\\"").build());
expressionValues.put(":v2", AttributeValue.builder().s("sold:0"").build());
我的过滤器语法的正确方法是什么?
我在 dynamodb web console 上尝试@Balu Vyamajala 的语法如下,还没有得到解决方案
contains (itemJson, :subValue)
的值为 "sold\":\"3\""
似乎有效。
查询的工作示例 Api 并按预期工作:
QuerySpec querySpec = new QuerySpec()
.withKeyConditionExpression("pk = :v_pk")
.withFilterExpression("contains (itemJson, :subValue)")
.withValueMap(new ValueMap().withString(":v_pk", "6").withString(":subValue", "sold\":\"3\""));
要从 Aws 控制台进行测试,我们只需输入 "sold":"2"
属性itemJson存储如下
"itemJson": {
"S": "{\"sold\":\"3\",\"listingTime\":\"20210107211621\",\"listCountry\":\"US\",\"sellerCountry\":\"US\",\"currentPrice\":\"44.86\",\"updateTime\":\"20210302092220\",\"itemLocation\":\"Miami,FL,USA\",\"listType\":\"FixedPrice\",\"categoryName\":\"Machines\",\"itemID\":\"293945109477\",\"sellerID\":\"holiday_for_you\",\"s3Key\":\"US/2021/2/FixedPrice/293945109477.json\",\"visitCount\":\"171\",\"createTime\":\"20210201233158\",\"listingStatus\":\"Completed\",\"endTime\":\"2021-02-28T20:22:57\",\"currencyID\":\"USD\"}"
},
我想用 filter:contains(itemJson, "sold":"0") 和 java sdk 查询,我试过这些语法,都失败了
expressionValues.put(":v2", AttributeValue.builder().s("\\"sold\\":\\"0\\"").build());
expressionValues.put(":v2", AttributeValue.builder().s("sold:0"").build());
我的过滤器语法的正确方法是什么?
我在 dynamodb web console 上尝试@Balu Vyamajala 的语法如下,还没有得到解决方案
contains (itemJson, :subValue)
的值为 "sold\":\"3\""
似乎有效。
查询的工作示例 Api 并按预期工作:
QuerySpec querySpec = new QuerySpec()
.withKeyConditionExpression("pk = :v_pk")
.withFilterExpression("contains (itemJson, :subValue)")
.withValueMap(new ValueMap().withString(":v_pk", "6").withString(":subValue", "sold\":\"3\""));
要从 Aws 控制台进行测试,我们只需输入 "sold":"2"