gpt4 book ai didi

java - map 属性未在 Dynamo 中正确更新。而是添加了新字段。

转载 作者:行者123 更新时间:2023-11-30 10:50:45 26 4
gpt4 key购买 nike

我正在使用 AWS Java SDK 与 DynamoDB 进行通信。我正在尝试对存储在 map 中的某些属性进行表更新。

在更新之前,我有一个看起来像这样的对象:

{
"myMap": {
"innerMap": {}
},
"hashKeyName": "hashKeyValue"
}

我的代码是这样的:

Table myTable = ...;
myTable.updateItem("hashKeyName", "hashKeyValue",
new AttributeUpdate("myMap.innerMap.myKey").addNumeric(100));

这次更新后,我的 Dynamo 对象看起来像这样(注意 map 仍然是空的):

{
"myMap": {
"innerMap": {}
},
"myMap.innerMap.myKey": 100,
"hashKeyName": "hashKeyValue"
}

为什么 myMap.innerMap.myKey 添加为单独的字段而不是在 map 中正确设置?

最佳答案

这是因为使用 AttributeUpdate 被认为是遗留操作,并且不支持将映射键用作属性名称。使用更新表达式的正确用法:

myTable.updateItem("hashKeyName", "hashKeyValue", 
"ADD myMap.innerMap.myKey :val", null /* NameMap, see comment */,
new ValueMap().withNumeric(":val", 100));

请注意,上面的表达式中没有名称映射。人们可能会想使用 ADD #name :val 作为更新表达式,然后为 #name => myMap.innerMap.myKey 提供名称映射。在这种情况下,这些表达式是等效的。当 . 出现在原始表达式中时,它被视为路径分隔符。当 . 出现在 NameMap 值中时,它不被视为路径分隔符。

关于java - map 属性未在 Dynamo 中正确更新。而是添加了新字段。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com