我有这样的事情:
{
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/