Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CLI, Beispiel für DynamoDB-Bedingungsausdrücke
Im Folgenden finden Sie einige AWS Command Line Interface (AWS CLI) Beispiele für die Verwendung von Bedingungsausdrücken. Diese Beispiele basieren auf der Tabelle ProductCatalog
, die in Verweisen auf Elementattribute bei der Verwendung von Ausdrücken in DynamoDB eingeführt wurde. Der Partitionsschlüssel für diese Tabelle lautet Id
. Es gibt keinen Sortierschlüssel. Die folgende PutItem
-Operation erstellt ein ProductCatalog
-Beispielelement, auf das wir uns in den Beispielen beziehen werden:
aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json
Die Argumente für --item
werden in der Datei item.json
gespeichert: (Der Einfachheit halber werden nur wenige Elementattribute verwendet.)
{ "Id": {"N": "456" }, "ProductCategory": {"S": "Sporting Goods" }, "Price": {"N": "650" } }
Themen
Conditional Put (Bedingtes Setzen)
Die PutItem
-Operation überschreibt ein Element mit demselben Primärschlüssel (falls vorhanden). Wenn Sie dies vermeiden möchten, verwenden Sie einen Bedingungsausdruck. Dies ermöglicht das Fortsetzen des Schreibvorgangs nur dann, wenn das in Frage stehende Element nicht bereits über denselben Primärschlüssel verfügt.
Im folgenden Beispiel wird mit attribute_not_exists()
überprüft, ob der Primärschlüssel in der Tabelle vorhanden ist, bevor versucht wird, den Schreibvorgang durchzuführen.
Anmerkung
Wenn Ihr Primärschlüssel sowohl aus einem Partitionsschlüssel (pk) als auch aus einem Sortierschlüssel (sk) besteht, überprüft der Parameter vor dem Schreibvorgang, ob attribute_not_exists(pk)
AND als vollständige Anweisung wahr oder falsch attribute_not_exists(sk)
ausgewertet wird.
aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json \ --condition-expression "attribute_not_exists(Id)"
Wenn der Bedingungsausdruck mit „falsch“ ausgewertet wird, gibt DynamoDB die folgende Fehlermeldung zurück: Die bedingte Anforderung ist fehlgeschlagen
.
Anmerkung
Weitere Informationen zu attribute_not_exists
und anderen Funktionen finden Sie unter Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB.
Bedingte Löschungen
Um ein bedingtes Löschen durchzuführen, nutzen Sie eine DeleteItem
-Operation mit einem Bedingungsausdruck. Der Bedingungsausdruck muss mit "true" ausgewertet werden, damit die Operation erfolgreich ist; andernfalls schlägt sie fehl.
Betrachten Sie das oben definierte Element.
Angenommen, Sie möchten das Element löschen, aber nur unter den folgenden Bedingungen:
-
Die
ProductCategory
ist entweder "Sportartikel" oder "Gartenzubehör". -
Der
Price
liegt zwischen 500 und 600.
Im folgenden Beispiel wird versucht, das Element zu löschen:
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"456"}}' \ --condition-expression "(ProductCategory IN (:cat1, :cat2)) and (Price between :lo and :hi)" \ --expression-attribute-values file://values.json
Die Argumente für --expression-attribute-values
werden in der Datei values.json
gespeichert:
{ ":cat1": {"S": "Sporting Goods"}, ":cat2": {"S": "Gardening Supplies"}, ":lo": {"N": "500"}, ":hi": {"N": "600"} }
Anmerkung
In dem Bedingungsausdruck weist der :
(Doppelpunkt) auf einen Ausdrucksattributwert hin – Platzhalter für den tatsächlichen Wert. Weitere Informationen finden Sie unter Verwenden von Ausdrucksattributwerten in DynamoDB.
Weitere Informationen zu IN
, AND
und anderen Schlüsselwörtern finden Sie unter Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB.
In diesem Beispiel wird der ProductCategory
-Vergleich mit True, aber der Price
-Vergleich mit False ausgewertet. Dadurch wird der Bedingungsausdruck mit "false" ausgewertet und die DeleteItem
-Operation schlägt fehl.
Bedingte Aktualisierungen
Um eine bedingte Aktualisierung durchzuführen, nutzen Sie eine UpdateItem
-Operation mit einem Bedingungsausdruck. Der Bedingungsausdruck muss mit "true" ausgewertet werden, damit die Operation erfolgreich ist; andernfalls schlägt sie fehl.
Anmerkung
UpdateItem
unterstützt auch Aktualisierungsausdrücke, in denen Sie die gewünschten Änderungen festlegen, die Sie an einem Element durchführen möchten. Weitere Informationen finden Sie unter Aktualisierungsausdrücke in DynamoDB verwenden.
Angenommen, Sie haben mit dem oben definierten Element begonnen.
Das folgende Beispiel führt eine UpdateItem
-Operation durch. Es versucht, den Price
eines Produkts um 75 zu reduzieren – der Bedingungsausdruck verhindert jedoch die Aktualisierung, wenn der aktuelle Price
unter 500 liegt.
aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --update-expression "SET Price = Price - :discount" \ --condition-expression "Price > :limit" \ --expression-attribute-values file://values.json
Die Argumente für --expression-attribute-values
werden in der Datei values.json
gespeichert:
{ ":discount": { "N": "75"}, ":limit": {"N": "500"} }
Wenn der Start-Price
650 ist, reduziert die UpdateItem
-Operation den Price
auf 575. Wenn Sie die UpdateItem
-Operation erneut ausführen, wird der Price
auf 500 reduziert. Wenn Sie ein drittes Mal ausführen, wird der Bedingungsausdruck mit False ausgewertet und die Aktualisierung schlägt fehl.
Anmerkung
In dem Bedingungsausdruck weist der :
(Doppelpunkt) auf einen Ausdrucksattributwert hin – Platzhalter für den tatsächlichen Wert. Weitere Informationen finden Sie unter Verwenden von Ausdrucksattributwerten in DynamoDB.
Weitere Informationen zu ">" und anderen Operatoren finden Sie unter Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB.
Beispiele für bedingte Ausdrücke
Weitere Hinweise zu den Funktionen, die in den folgenden Beispielen verwendet werden, finden Sie unter Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB. Weitere Informationen zum Angeben verschiedener Attributtypen in einem Ausdruck finden Sie unter Verweisen auf Elementattribute bei der Verwendung von Ausdrücken in DynamoDB.
Überprüfen der Attribute in einem Element
Sie können das Vorhandensein (oder Fehlen) jedes Attributs überprüfen. Wenn der Bedingungsausdruck mit "true" ausgewertet wird, ist die Operation erfolgreich; andernfalls schlägt sie fehl.
Das folgenden Beispiel verwendet attribute_not_exists
zum Löschen eines Produkts nur, wenn es noch nicht über ein Price
-Attribut verfügt:
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_not_exists(Price)"
DynamoDB stellt auch eine attribute_exists
-Funktion bereit. Das folgende Beispiel löscht ein Produkt nur dann, wenn es schlechte Bewertungen erhalten hat.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_exists(ProductReviews.OneStar)"
Prüfung auf Attributtyp
Mit der attribute_type
-Funktion können Sie den Datentyp eines Attributwerts überprüfen. Wenn der Bedingungsausdruck mit "true" ausgewertet wird, ist die Operation erfolgreich; andernfalls schlägt sie fehl.
Im folgenden Beispiel wird attribute_type
nur dann zum Löschen eines Produkts verwendet, wenn es über ein Color
-Attribut des Typs String Set verfügt.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_type(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Die Argumente für --expression-attribute-values
sind in der expression-attribute-values JSON-Datei gespeichert.
{ ":v_sub":{"S":"SS"} }
Prüfen des Startwerts der Zeichenfolge
Sie können überprüfen, ob ein Zeichenfolge-Attributwert mit einer bestimmten Teilzeichenfolge beginnt, indem Sie die begins_with
-Funktion verwenden. Wenn der Bedingungsausdruck mit "true" ausgewertet wird, ist die Operation erfolgreich; andernfalls schlägt sie fehl.
Im folgenden Beispiel wird begins_with
nur dann zum Löschen eines Produkts verwendet, wenn das FrontView
-Element der Pictures
-Karte mit einem bestimmten Wert beginnt.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "begins_with(Pictures.FrontView, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Die Argumente für --expression-attribute-values
werden in der expression-attribute-values JSON-Datei gespeichert.
{ ":v_sub":{"S":"http://"} }
Prüfen auf ein Element in einem Satz
Sie können nach einem Element in einem Satz oder nach einer Teilzeichenfolge innerhalb einer Zeichenfolge suchen, indem Sie die contains
-Funktion verwenden. Wenn der Bedingungsausdruck mit "true" ausgewertet wird, ist die Operation erfolgreich; andernfalls schlägt sie fehl.
Im folgenden Beispiel wird contains
nur dann zum Löschen eines Produkts verwendet, wenn der Color
-Zeichenfolgensatz ein Element mit einem bestimmten Wert aufweist.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "contains(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Die Argumente für --expression-attribute-values
werden in der expression-attribute-values JSON-Datei gespeichert.
{ ":v_sub":{"S":"Red"} }
Überprüfen der Größe eines Attributwerts
Sie können die Größe eines Attributwerts überprüfen, indem Sie die size
-Funktion verwenden. Wenn der Bedingungsausdruck mit "true" ausgewertet wird, ist die Operation erfolgreich; andernfalls schlägt sie fehl.
Im folgenden Beispiel wird size
nur dann zum Löschen eines Produkts verwendet, wenn die Größe des VideoClip
-Binärattributs größer als 64000
Byte ist.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "size(VideoClip) > :v_sub" \ --expression-attribute-values file://expression-attribute-values.json
Die Argumente für --expression-attribute-values
werden in der expression-attribute-values JSON-Datei gespeichert.
{ ":v_sub":{"N":"64000"} }