使用boto3和全局二级索引有条件地使用dynamodb

时间:2016-05-26 04:44:32

标签: amazon-dynamodb boto3

我有一个动力车 hashkey:ContactID
全球二级指数:EmailIndex(电子邮件), MobileIndex(移动)

我想以新项目没有的条件向dynamodb插入项目 表格

中已存在EmailId或手机号码

我听说有条件的提交是否可以在上述情况下使用它。

应该注意,电子邮件和移动字段并不总是出现在项目

以下是我现在用于插入项目

的代码
table = dynamodb.Table('Contacts')
response = table.put_item(
   Item={
        'ContactID': str(uuid.uuid4()),
        'Email': 'user@ymail.com',
        'Mobile':'020298377783',
        'City':"Alaska",

    },
    Expected={'Email': {'Exists': False}, 'Mobile':{'Exists': False}}

)

但即使我提供相同的电子邮件或移动

,它也会继续添加项目

1 个答案:

答案 0 :(得分:0)

如果每个项目都确实有电子邮件和与之关联的移动设备,您可以创建一个包含复合分区键架构的表,其中分区键为mobile_email=[{Mobile},{Email}]。然后,您可以在PutItem请求中使用attribute_not_exists(mobile_email)条件来阻止创建新项目。