首页 文章

是否可以在DynamoDB中嵌套嵌套字段?

提问于
浏览
9

我想在DynamoDB中'upsert'一个文档 . 也就是说,我想指定一个键和一组字段/值对 . 如果没有包含该密钥的文档,我想要使用该密钥创建的文档以及我指定的键/值对 . 如果存在具有该键的文档,我希望将我指定的字段设置为指定的值(如果之前不存在这些字段,则应添加它们) . 现有文档中的任何其他未指定字段应单独保留 .

当我设置的字段/值对都是顶级字段时,似乎我可以通过UpdateItem调用很好地完成此操作 . 如果我有嵌套结构,只要结构存在, UpdateItem 将用于设置嵌套字段 . 换句话说,如果我的现有文档有 "foo": {} ,那么我可以成功设置 "foo.bar": 42 .

但是,如果没有 foo 对象,我似乎无法设置 "foo.bar": 42 (就像没有包含指定字段的文档的情况一样,我的'upsert'表现为'insert' .

几年前我在AWS论坛上发现a discussion这似乎意味着我想做的事情无法完成,但我希望最近有所改变,或者有人知道这样做的方法吗?

2 回答

  • 0

    使用以下查询可以实现(“foo.bar”:42):

    table.update_item(Key = {'Id' : id},
                  UpdateExpression = 'SET foo = :value1',
                  ExpressionAttributeValues = {':value1': {'bar' : 42}}
                  )
    

    希望这可以帮助 :)

  • 1

    UpdateItem的行为类似于“upsert”操作:如果项目存在于表中,则更新该项目,但如果不存在,则添加(插入)新项目 . http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SQLtoNoSQL.UpdateData.html

相关问题