对于DynamoDB项目,仅在该列表中不存在该元素时,该列表才能附加一个是密钥值的列表?
我在DynamoDB中有一个项目,其键具有值作为列表。我想用新元素附加该列表,只有当它们尚未存在该列表中的情况下。我不想复制该列表中的任何元素。项目的结构如下所示:
{
"username": "blabla",
"my_list": ["element1","element2"]
}
我在Python中使用BOTO3库,这是我的更新代码块:
response = my_table.update_item(
Key = {
'username': "blabla"
},
UpdateExpression="SET my_list = list_append(my_list, :i)",
ExpressionAttributeValues={
':i': ["element1"],
},
ReturnValues="UPDATED_NEW"
)
我尝试在Update Expression中使用IF_NOT_EXIST(),但始终有语法错误。如何正确实现此目标?谢谢。
I have an item in DynamoDB that has a key which has values as a list. I want to append that list with new elements, only if they are not already exists in that list. I don't want to duplicate any element in that list. Item's structure is like below:
{
"username": "blabla",
"my_list": ["element1","element2"]
}
I use boto3 library in Python and this is my code block for the update:
response = my_table.update_item(
Key = {
'username': "blabla"
},
UpdateExpression="SET my_list = list_append(my_list, :i)",
ExpressionAttributeValues={
':i': ["element1"],
},
ReturnValues="UPDATED_NEW"
)
I tried to use if_not_exist() in UpdateExpression but always got syntax errors. How can i properly achieve this goal? Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不应使用列表需要使用像DataType这样的字符串集:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks.namingrulesdatatypes.html
将值添加值
用于 =“ https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/expressions.updateexpressions.html#expressions.updateexpressions.updateexpressions.add” /amazondynamodb/latest/developerguide/expressions.updateexpressions.html#expressions.updateexpressions.add <
更改代码。
ad 根据此,您可以像以下答案
/ stackoverflow.com/a/56861830/13055947"> https://stackoverflow.com/a/56861830/13055947
You should not use a list you need to use a String Set like defined as datatype here:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html
For adding values to a Set you need to use ADD UpdateOperation like described here
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD
According to this you can change your code like
This answer shows howto remove items from the set again
https://stackoverflow.com/a/56861830/13055947