我在发电机中有以下表格:
var result = _.chain(data)
.map( company => [_.omit(company, 'Employees'), company.Employees])
.flatten()
.value();
新评论到达时(如id | comment_ids | updated_at
1 [12, 123] '2017-09-09'
)如何更新相应的11
以获取:
id
答案 0 :(得分:1)
我不是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元素中的数据类型没有限制,list元素中的元素不必是同一类型。
答案 1 :(得分:1)
相应地使用运算符或函数来附加到列表或设置。
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'
},
)