amazon-dynamodb - 如何在 dynamodb 中添加空映射或数据映射?

标签 amazon-dynamodb

我有这样的事情:

{
  Records:{}
}

我只想在记录中添加数据,如下所示:
{
  Id: 123,
  Records:{
    10001: { event : "item1" }
  }
}

我的第一次尝试:
var params = {
    TableName : "Records",
    Key : { Id : 123 },
    UpdateExpression: 'set Record.#k1.event = :v1',
    ExpressionAttributeNames: { '#k1' :  10001},
    ExpressionAttributeValues: { ':v1' : 'item1' }
};

因为 Record.10001 不存在,它给了我错误:
The document path provided in the update expression is invalid for update

“ADD”仅支持 NUMBER 和 SET 类型,因此不适合我的情况。

我的第二次尝试(第一次尝试创建一个空 map ):
var params = {
    TableName : "Records",
    Key : { Id : 123 },
    UpdateExpression: 'set Record.#k1 = {}',
    ExpressionAttributeNames: { '#k1' :  10001},
};

它失败了,因为我的语法可能不正确,而且我找不到如何为属性创建空映射。

所以我的问题是如何将结构化对象作为 map 或空 map 添加到现有项目中,如上例所示?

我可以轻松地从亚马逊 DynamoDB 数据管理页面修改数据,所以至少我知道有一种方法可以做到这一点。我只需要知道怎么做。

谢谢

最佳答案

我以某种方式成功地做到了这一点:

var params = {
    TableName: "Records",
    Key: { Id: 123 },
    UpdateExpression: 'set Records.#k1 = :v1',
    ExpressionAttributeNames: {'#k1': '10001',},
    ExpressionAttributeValues: {':v1': { event: 'Yay~' } }
};

您可以选择使用
    UpdateExpression: 'set Records.#k1 = if_not_exists( Records.#k1, :v1)',

以避免覆盖现有记录。

关于amazon-dynamodb - 如何在 dynamodb 中添加空映射或数据映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35569733/

相关文章:

amazon-dynamodb - 模式中的 Dynamoose map 列表

python - 动态模块 : query using more than two attributes

amazon-web-services - 在 DynamoDb 中是否可以使用给定的排序键获取所有项目?

amazon-web-services - 我可以使用 AWS IAM/Cognito 获得动态用户特定权限吗?

amazon-web-services - 通过 CloudFormation 为现有表添加自动缩放功能到 AWS DynamoDB

java - 使用 java 从具有私有(private)子网的 ec2 实例访问 amazon Dynamodb

amazon-dynamodb - 使用按需 DynamoDB 进行节流

ios - 我们是否必须使用 Cognito 进行 Dynamodb 访问?

amazon-web-services - 数据管道(DynamoDB 到 S3)- 如何格式化 S3 文件?

python - 如何将 map 插入 DynamoDB 表?