我想在DynamoDB中'插入'文档。也就是说,我想指定一个键和一组字段/值对。如果没有文档存在与该键,我不会用该键和我指定的键/值对创建一个。如果文档与该键一起存在,我希望我指定的字段被设置为指定的值(如果这些字段以前不存在,则应该添加它们)。现有文档中的任何其他未指定的字段都应单独保留。是否可以在DynamoDB中插入嵌套字段?
看来我可以用UpdateItem
调用来做到这一点,当我设置的字段/值对都是顶级字段时。如果我有嵌套结构,只要结构存在,UpdateItem
就可以设置嵌套字段。换句话说,如果我现有的文档有"foo": {}
,那么我可以成功设置"foo.bar": 42
。
不过,我似乎不能够设置"foo.bar": 42
如果没有foo
对象已(如在没有与指定字段没有文件在所有的情况下,和我的“UPSERT”被表现为一个'insert'。
我在几年前的AWS论坛上发现了a discussion,这似乎暗示我想做的事情无法完成,但我希望最近这个改变了,或者有人知道怎么办?
再给你一个数据点,我看着这在2015年5月(ISH)和你提到的同样的问题仍然存在。我无法实现嵌套字段upsert的目标,所以我不得不改变我的方法来解决问题以及我如何存储数据。 – mkobit
@mkobit感谢您的数据点;这也是我得出的结论。由于我的数据具有固定数量的嵌套层次,因此我最终将其平铺存储,并将字段命名为'foo_bar',并且将编组/解组代码添加到我的DAO层以进行翻译。这是一个痛苦,但它似乎工作得很好(至少目前为止) – pkaeding
一年后同样的问题。烦人的部分是Dynamo不会抛出错误,它只是不保存数据树的那部分。 – Jelling