簡體   English   中英

如何更新Dynamo DB中的項目集合?

[英]How to update collections of items in dynamo db?

我在發電機中有下表:

id | comment_ids | updated_at
1      [12, 123]   '2017-09-09'

當新評論到達時(如11 ),如何更新相應的id以獲取:

id | comment_ids | updated_at
1   [12, 123, 11]   '2017-09-09'

我不是Python開發人員,但是您要使用的API是UpdateItem。

如果屬性“ comment_ids”的數據類型為Set:

{
    "TableName": "XXX",
    "Key": {
        "id": {
            "N": "1"
        }
    },
    "UpdateExpression": "ADD #cid :new_cid",
    "ExpressionAttributeNames": {
        "#cid": "comment_ids"
    },
    "ExpressionAttributeValues": {
        ":new_cid": {"N": "11" }
    }
}

如果屬性“ comment_ids”的數據類型為列表:

{
    "TableName": "XXX",
    "Key": {
        "id": {
            "N": "1"
        }
    },
    "UpdateExpression": "SET #cid = list_append(#cid, :new_cid)",
    "ExpressionAttributeNames": {
        "#cid": "comment_ids"
    },
    "ExpressionAttributeValues": {
        ":new_cid": {"N": "11" }
    }
}

請記住,Set和Lists 文檔之間的區別:

集合集合只能是一種標量類型不支持空集合不保留集合內的順序每個值都必須唯一

列表列表類型屬性可以存儲值的有序集合。 列表用方括號括起來:[...]

列表類似於JSON數組。 對可以存儲在列表元素中的數據類型沒有任何限制,並且列表元素中的元素不必具有相同的類型。

相應地使用運算符或函數將其追加到列表或集合。

  • 運算符ADD-如果數據類型為SET(即SS)
  • 函數list_append如果數據類型為LIST(即L)

追加到列表:-

1)定義列表並在ExpressionAttributeValues使用它(即idVals)

idVal = [11]

response = table.update_item(
    Key={
        '#id': 1992            
    },    
    UpdateExpression="SET comment_ids = list_append(comment_ids , :idVal)",
    ExpressionAttributeValues={
        ':idVal': idVal
    },
    ExpressionAttributeNames={
        '#id' : 'id'
    },
)

追加設置:-

1)定義集合並在ExpressionAttributeValues使用它(即idVals)

idVals = set([11])

response = table.update_item(
    Key={
        '#id': 1999            
    },
    UpdateExpression="ADD comment_ids :idVal",
    ExpressionAttributeValues={
        ':idVal': idVals
    },
    ExpressionAttributeNames={
        '#id' : 'id'
    },
)

暫無
暫無

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

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