DynamoDB如何查询字段为String类型的条目?求更优方案
解决DynamoDB遗留表字段类型筛选问题
你可以直接使用DynamoDB的attribute_type()函数来精准筛选出term字段为String类型的条目,这比逐个判断数字开头要简洁得多。
具体实现
使用如下Condition Expression:
attribute_type(term, 'S')
为什么之前的方案效果不佳?
- 你尝试的
NOT Contains (term, {S: "a"})无效,是因为DynamoDB的类型严格匹配:当字段是Number类型时,用String类型的参数进行Contains判断会直接不匹配该条件,NOT逻辑生效后反而把Number类型的条目也包含进来了。 - 逐个判断数字开头的写法不仅繁琐,还存在局限性——如果后续String类型的
term出现非数字内容,这种方法会直接漏选。
功能说明
attribute_type()函数直接检查字段的存储类型,不管字段内容是什么,只要类型为String(参数用'S'表示)就会被筛选出来,完全适配你的需求。
内容的提问来源于stack exchange,提问作者Denys Kurochkin
相关产品推荐
相关产品推荐

