假设我有一个 DynamoDB 文档,其中包含一个字符串集属性,其中包含一个字符串元素。如果我使用
DELETE
更新表达式删除元素,则集合将为空。但根据文档,DynamoDB 不允许空集属性,
属性值不能为空集(字符串集、数字集或 二进制集),但是允许空列表和映射。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html
在这种情况下更新表达式的行为是什么?它是否记录在任何地方?我无法找到任何关于这是否会是错误或者 Dynamo 是否会删除文档上的属性的参考,因为该集合无论如何都是空的。
如果您使用
DELETE
更新表达式删除的元素是集合中唯一的元素,则整个属性都会被删除。
类似地,
ADD
更新表达式会创建一个集合(如果不存在),然后插入该元素。
这种行为在 AWS 官方文档中似乎没有明确描述,但在实践中相对容易验证。