我有發電機如下表:如何更新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'
我有發電機如下表:如何更新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」的數據類型是一組:
{
"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" }
}
}
請記住,設置和列表之間的區別docs:
集 集只能是一個標量型的個空集不支持集內 排序不保留 每個值都必須是唯一
列表 列表類型的屬性可以存儲值的有序集合。列表括在方括號中:[...]
列表與JSON數組類似。對於可以存儲在列表元素中的數據類型沒有限制,並且列表元素中的元素不必具有相同的類型。
相應地使用操作符或函數來追加到列表或設置。
list_append
- 如果數據類型是列表(即L)追加到列表: -
1)定義列表並使用它在ExpressionAttributeValues
(ie 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'
},
)
comment_ids的dynamodb數據類型是什麼?它是設置還是列出? – notionquest