2016-05-26 20 views
1

Ich habe einen DynamoDB mit
Hashkey: ContactID
Globalem Sekundärindex: EmailIndex (E-Mail), MobileIndex (Mobile)Conditional Put auf DynamoDB mit globalem Sekundär Index mit boto3

Ich mag Artikel einfügen DynamoDB mit der Bedingung, dass das neue Element nicht EMAILID oder Mobilnummer bereits in Tabelle bedingt hat

ich hörte von Put ist es möglich, zu verwenden, die für die oben genannte Bedingung vorliegt.

Es soll beachtet werden, dass E-Mail und Mobile Felder sind nicht immer in der Position

Unten ist der Code, den ich jetzt Artikel

table = dynamodb.Table('Contacts') 
response = table.put_item(
    Item={ 
     'ContactID': str(uuid.uuid4()), 
     'Email': '[email protected]', 
     'Mobile':'020298377783', 
     'City':"Alaska", 

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

) 

einfügen verwenden, aber es hält auf Punkt hinzugefügt, auch wenn Ich gebe dieselbe E-Mail-Adresse oder Mobiltelefonnummer

Antwort

0

Wenn für jedes Element eine E-Mail-Adresse und ein Mobiltelefon verknüpft ist, können Sie eine Tabelle mit einem zusammengesetzten Partitionsschlüsselschema erstellen, wobei der Partitionsschlüssel mobile_email=[{Mobile},{Email}] lautet. Sie können dann eine attribute_not_exists(mobile_email) Bedingung für Ihre PutItem-Anforderung verwenden, um zu verhindern, dass neue Elemente erstellt werden.

Verwandte Themen