簡體   English   中英

對於 DynamoDB 項目,僅當該列表中不存在該元素時,我如何才能附加一個作為鍵值的列表?

[英]For a DynamoDB item, how can i append a list which is a value of a key only if the element is not exists in that list?

我在 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"
)

我嘗試在 UpdateExpression 中使用 if_not_exist() 但總是出現語法錯誤。 我怎樣才能正確地實現這個目標? 謝謝你。

您不應該使用需要使用字符串集的列表,例如在此處定義為數據類型:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html

要向 Set 添加值,您需要使用 ADD UpdateOperation ,如下所述

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD

根據這個你可以改變你的代碼

{
 "username": "blabla",
 "my_list": set(["element1","element2"])
}

# ---

response = my_table.update_item(
    Key = {
        'username': "blabla"
    },
    UpdateExpression="ADD my_list :i",
    ExpressionAttributeValues={
        ':i': set(["element1"]),
    },
    ReturnValues="UPDATED_NEW"
)

此答案顯示如何再次從集合中刪除項目

https://stackoverflow.com/a/56861830/13055947

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM