Amazon dynamodb DynamoDB:列出集合的附加选项

Amazon dynamodb DynamoDB:列出集合的附加选项,amazon-dynamodb,Amazon Dynamodb,我正在尝试对dynamodb字符串集属性执行更新操作。对于列表,操作将是 set #key = list_append(if_not_exists(#key, :empty_list), :newValue) 但这会生成一个列表属性。除了集合,还有列表附加的替代方法吗?由于DynamoDB不能存储空集合,这实际上相当简单,您可以使用ADD 下面是我用Python构建的一个示例: 导入boto3 表\u NAME=“设置演示” def create_table(): ddb=两个客户端(“dyn

我正在尝试对dynamodb字符串集属性执行更新操作。对于列表,操作将是

set #key = list_append(if_not_exists(#key, :empty_list), :newValue)

但这会生成一个列表属性。除了集合,还有列表附加的替代方法吗?

由于DynamoDB不能存储空集合,这实际上相当简单,您可以使用
ADD

下面是我用Python构建的一个示例:

导入boto3
表\u NAME=“设置演示”
def create_table():
ddb=两个客户端(“dynamodb”)
ddb.create_表(
属性定义=[
{“AttributeName”:“PK”,“AttributeType”:“S”},
{“AttributeName”:“SK”,“AttributeType”:“S”}
],
TableName=表格名称,
凯西马=[
{“AttributeName”:“PK”,“KeyType”:“HASH”},
{“AttributeName”:“SK”,“KeyType”:“RANGE”}
],
BillingMode=“按请求付款”
)
def添加到集合(项目id:str,值:str):
table=boto3.resource(“dynamodb”).table(表名称)
表1.1更新项目(
钥匙={
“PK”:f“ITEM{ITEM#u id}”,
“SK”:f“元数据”,
},
UpdateExpression=“添加#设置_名称:设置_值”,
表达式属性名称={
“#设置_名称”:“值”
},
表达式属性值={
“:set_value”:{value},#必须是集合类型
}
)
如果名称=“\uuuuu main\uuuuuuuu”:
#创建_表()
将_添加到_集合(“a”,“值_1”)
将_添加到_集合(“a”,“值_2”)
将_添加到_集合(“a”,“值_1”)
在python中,传递一个带有
ExpressionAttributeValues
中设置的数据类型的值就足够了,这样Bot3就知道需要将其转换为一个隐藏的集合

当我第一次调用
add_to_set
时,它将创建set属性,随后的调用只是对该属性的更新

这是项目最后的样子:

{
“主键”:{
“S”:“a项”
},
“SK”:{
“S”:“元数据”
},
“价值观”:{
“SS”:[
“价值1”,
“价值2”
]
}
}

这解决了您的问题吗?请考虑接受答案,以便未来读者知道这是一个解决方案,帮助你。