aws dynamodb 查询属性值包含特殊字符?

时间:2021-03-02 02:16:56

标签: amazon-dynamodb aws-dynamodb

属性 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 网络控制台上尝试@Balu Vyamajala 的语法如下,但还没有得到解决方案 enter image description here

1 个答案:

答案 0 :(得分:1)

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" enter image description here

相关问题