繁体   English   中英

如何使用 boto3(python)添加到 DynamoDB 中的“地图地图”

[英]How to add to a 'Map of Maps' in DynamoDB with boto3 (python)

我在 DynamoDB 中有以下结构:

{
  "fruits": {
    "1": {
      "identifier": "orange",
      "colour": "orange"
    },
    "2": {
      "identifier": "strawberry",
      "colour": "red"
    }
  },
  "username": "my-username"
}

如何添加“第 3 个水果项目”及其相关属性? 我的目标是实现以下目标:

{
  "fruits": {
    "1": {
      "identifier": "orange",
      "colour": "orange"
    },
    "2": {
      "identifier": "strawberry",
      "colour": "red"
    },
    "3": {
      "identifier": "pear",
      "colour": "green"
    }
  },
  "username": "my-username"
}

我尝试了类似于以下内容的方法:

result = table.update_item(
    Key={
        'username': str('my-username')
    },
    UpdateExpression='set fruits.3.identifier = :i, fruits.3.colour = :c',
    ExpressionAttributeValues={
        ':i': 'pear',
        ':c': 'green'
    }
)

谢谢!

您不能直接设置诸如fruits.3.identifier之类的属性,因为fruits.3还不存在。 相反,您必须将fruits.3设置为一个整体 object。

您的更新表达式应该是这样的:

result = table.update_item(
    Key={
        'username': str('my-username')
    },
    UpdateExpression='set fruits.3 = :newFruit',
    ExpressionAttributeValues={
        ':newFruit': {
            'colour': 'green',
            'identifier': 'pear'
        }
    }
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM