我有很多具有唯一 ID 的对象。每个对象都可以有多个与之关联的标签,如下所示:
123: ['a', 'hello']
456: ['dsajdaskldjs']
789: (no labels associated yet)
我不打算将所有对象存储在 DynamoDB 中,只存储这些标签集。所以添加这样的标签是有意义的:
- 查找具有 (id = required_id) 的记录
- 如果有一个,并且它有一个名为 的集合
label_set
,则向该集合添加一个标签 - 如果没有具有该 id 的记录,或者现有记录没有名为 的属性
label_set
,则创建一个记录和一个属性,并使用由标签组成的集合来初始化该属性
如果我使用一组数字,我可以只使用命令ADD
操作。UPDATE
这个命令完全符合我的描述。但是,这不适用于字符串集:
如果没有项目与指定的主键匹配:
ADD - 使用提供的主键和属性值的数字(或数字集)创建项目。对字符串类型无效。
所以我必须使用set to的PUT
操作,然后(以防失败)操作。这是两个操作,有点糟糕(因为您为每次操作付费,所以成本将是它们的 2 倍)。Expected
{"label_set":{"Exists":false}}
ADD
这种限制对我来说似乎很奇怪。为什么适用于数字集的东西不适用于字符串集?也许我做错了什么。
使用许多记录(123, 'a'), (123, 'hello')
而不是每个对象的一个记录与一个集合不是一个解决方案:我想get
一次从集合中获取所有值,而不需要任何扫描。