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.
Expected (veraltet)
Anmerkung
Es wird empfohlen, nach Möglichkeit die neuen Ausdrucksparameter anstelle der alten Parameter zu verwenden. Weitere Informationen finden Sie unter Verwenden von Ausdrücken in DynamoDB. Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter verwenden Sie stattdessen ConditionExpression..
Der alte Bedingungsparameter Expected ist ein bedingter Block für eine UpdateItem-Operation. Expected ist eine Zuordnung von Attribut-Bedingung-Paaren. Jedes Element des Mappings besteht aus einem Attributnamen, einem Vergleichsoperator und mindestens einem Wert. DynamoDB vergleicht das Attribut anhand des Vergleichsoperators mit dem bzw. den angegebenen Werten. Für jedes Expected-Element lautet das Ergebnis der Auswertung entweder True oder False.
Wenn Sie mehr als ein Element im Expected-Mapping angeben, müssen alle Bedingungen standardmäßig mit True ausgewertet werden. Mit anderen Worten: Die Bedingungen werden mit dem AND-Operator kombiniert. (Sie können dasConditionalOperator-Parameter auf ODER zu den Bedingungen verwenden. In diesem Fall müssen nicht alle, sondern mindestens eine der Bedingungen mit True ausgewertet werden.)
Wenn die Expected-Zuordnung mit True ausgewertet wird, ist die bedingte Operation erfolgreich; andernfalls schlägt sie fehl.
Expected enthält Folgendes:
-
AttributeValueList– Ein oder mehrere Werte, die anhand des angegebenen Attributs ausgewertet werden sollen. Die Anzahl der Werte in der Liste hängt vom verwendetenComparisonOperatorab.Beim Zahlentyp sind Wertevergleiche numerisch.
Vergleiche von Zeichenfolgenwerten für größer als, gleich oder kleiner als basieren auf Unicode mit UTF-8-Binärkodierung. Beispiel:
aist größer alsAundaist größer alsB.Beim Binärtyp betrachtet DynamoDB jedes Byte der Binärdaten beim Vergleichen der binären Werte ohne Vorzeichen.
-
ComparisonOperator– Ein Vergleichsoperator zum Auswerten der Attribute in derAttributeValueList. Für den Vergleich verwendet DynamoDB Strongly Consistent-Lesevorgänge.Die folgenden Vergleichsoperatoren sind verfügbar:
EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEENEs folgen Beschreibungen der einzelnen Vergleichsoperatoren.
-
EQ: Gleich.EQwird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Zum Beispiel,{"S":"6"}ist nicht gleich{"N":"6"}. Auch,{"N":"6"}ist nicht gleich{"NS":["6", "2", "1"]}. -
NE: Nicht gleich.NEwird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.AttributeValueListkann nur einAttributeValuevom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element einenAttributeValueeines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}ist nicht gleich{"N":"6"}. Auch,{"N":"6"}ist nicht gleich{"NS":["6", "2", "1"]}. -
LE: kleiner als oder gleich.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}ist nicht gleich{"N":"6"}. Auch,{"N":"6"}entspricht nicht{"NS":["6", "2", "1"]}. -
LT: kleiner als.AttributeValueListkann nur einAttributeValuevom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}ist nicht gleich{"N":"6"}. Auch,{"N":"6"}entspricht nicht{"NS":["6", "2", "1"]}. -
GE: größer als oder gleich.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}ist nicht gleich{"N":"6"}. Auch entspricht{"N":"6"}nicht{"NS":["6", "2", "1"]}. -
GT: größer als.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}ist nicht gleich{"N":"6"}. Auch entspricht{"N":"6"}nicht{"NS":["6", "2", "1"]}. -
NOT_NULL: Das Attribut ist vorhanden.NOT_NULLwird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.Anmerkung
Dieser Operator prüft das Vorhandensein eines Attributs, nicht seines Datentyps. Wenn der Datentyp des Attributs „
a“ Null ist und Sie ihn mitNOT_NULLauswerten, ist das Ergebnis ein Boolescher Werttrue. Dieses Ergebnis ist darauf zurückzuführen, dass das Attribut „a“ vorhanden ist. Sein Datentyp ist für den VergleichsoperatorNOT_NULLnicht relevant. -
NULL: Das Attribut ist nicht vorhanden.NULLwird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.Anmerkung
Dieser Operator prüft das Nichtvorhandensein eines Attributs, nicht seines Datentyps. Wenn der Datentyp des Attributs „
a“ Null ist und Sie ihn mitNULLauswerten, ist das Ergebnis ein Boolescher Wertfalse. Dies ist darauf zurückzuführen, dass das Attribut „a“ vorhanden ist. Sein Datentyp ist für den VergleichsoperatorNULLnicht relevant. -
CONTAINS: Prüft auf eine Teilsequenz oder einen Wert in einem Satz.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn das Zielattribut des Vergleichs vom Typ Zeichenfolge ist, dann prüft der Operator, ob eine Teilzeichenfolge übereinstimmt. Wenn das Zielattribut des Vergleichs vom Typ Binärwert ist, sucht der Operator nach einer Teilsequenz des Ziels, die mit der Eingabe übereinstimmt. Wenn das Zielattribut des Vergleichs ein Satz ist („SS“, „NS“ oder „BS“), dann wertet der Operator die Prüfung mit True aus, wenn er eine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.CONTAINS wird für Listen unterstützt: Beim Auswerten von „
a CONTAINS b“, kann „a“ eine Liste sein. Dagegen kann „b“ kein Satz, keine Zuordnung und keine Liste sein. -
NOT_CONTAINS: Prüft ein Element auf eine fehlende Teilsequenz oder einen fehlenden Wert in einem Satz.AttributeValueListkann nur einAttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn das Zielattribut des Vergleichs eine Zeichenfolge ist, dann prüft der Operator auf eine fehlende Übereinstimmung einer Teilzeichenfolge. Wenn das Zielattribut des Vergleichs vom Typ Binärwert ist, prüft der Operator, ob eine Teilsequenz des Ziels, die mit der Eingabe übereinstimmt, fehlt. Wenn das Zielattribut des Vergleichs ein Satz ist („SS“, „NS“ oder „BS“), dann wertet der Operator mit True aus, wenn erdoes notkeine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.NOT_CONTAINS wird für Listen unterstützt: Beim Auswerten von „
a NOT CONTAINS b“ kann „a“ eine Liste sein. Dagegen kann „b“ kein Satz, keine Zuordnung und keine Liste sein. -
BEGINS_WITH: Prüft auf ein Präfix.AttributeValueListkann nur einAttributeValuevom Typ Zeichenfolge oder Binärwert (keine Zahl oder Satztyp) sein. Das Zielattribut des Vergleichs muss vom Typ Zeichenfolge oder Binärwert sein (nicht Zahl oder Satz). -
IN: Überprüft, ob übereinstimmende Elemente in zwei Sätzen vorhanden sind.AttributeValueListkann nur ein oder mehrereAttributeValue-Elemente vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Diese Attribute werden mit einem vorhandenen Satztypattribut eines Elements verglichen. Wenn ein beliebiges Element des Eingabesatzes im Elementattribut vorhanden ist, wird der Ausdruck mit True ausgewertet. -
BETWEEN: Größer als oder gleich dem ersten Wert und kleiner als oder gleich dem zweiten Wert.AttributeValueListmuss zweiAttributeValue-Elemente desselben Typs enthalten, und zwar Zeichenfolge, Zahl oder Binärwert (kein Satztyp). Es kommt zu einer Übereinstimmung mit dem Zielattribut, wenn der Zielwert größer als oder gleich dem ersten Element und kleiner als oder gleich dem zweiten Element ist. Wenn ein Element einAttributeValue-Element eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispiel:{"S":"6"}stimmt nicht mit{"N":"6"}überein. Auch,{"N":"6"}entspricht nicht{"NS":["6", "2", "1"]}.
-
Die folgenden Parameter können statt AttributeValueList und ComparisonOperator verwendet werden:
-
Value– Ein Wert für DynamoDB zum Vergleichen mit einem Attribut. -
Exists– Ein Boolescher Wert, der DynamoDB veranlasst, den Wert auszuwerten, bevor die bedingte Operation ausgeführt wird:-
Wenn
Existstrueist, prüft DynamoDB, ob der Attributwert in der Tabelle bereits vorhanden ist. Falls gefunden, wird die Bedingung mit True ausgewertet, andernfalls mit False. -
Wenn
Existsfalseist, geht DynamoDB davon aus, dass der Attributwertnotin der Tabelle vorhanden ist. Wenn der Wert tatsächlich nicht vorhanden ist, ist die Annahme gültig und die Bedingung wird mit True ausgewertet. Wenn der Wert trotz der Annahme, dass er nicht vorhanden ist, gefunden wird, wird die Bedingung mit True ausgewertet.
Der Standardwert für
Existsisttrue. -
Die Parameter Value und Exists sind mit AttributeValueList und ComparisonOperator nicht kompatibel. Hinweis: Wenn Sie beide Parametersätze auf einmal verwenden, gibt DynamoDB eine ValidationException-Ausnahme zurück.
Anmerkung
Dieser Parameter unterstützt keine Attribute vom Typ Liste oder Zuordnung.
Verwenden Sie stattdessen ConditionExpression – Beispiel
Angenommen, Sie möchten ein Element in der Tabelle Music ändern, jedoch nur, wenn eine bestimmte Bedingung True ist. Sie können eine UpdateItem-Anforderung mit dem Parameter Expected wie in diesem AWS CLI-Beispiel verwenden:
aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --attribute-updates '{ "Price": { "Action": "PUT", "Value": {"N":"1.98"} } }' \ --expected '{ "Price": { "ComparisonOperator": "LE", "AttributeValueList": [ {"N":"2.00"} ] } }'
Sie können stattdessen ConditionExpression verwenden.
aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --update-expression 'SET Price = :p1' \ --condition-expression 'Price <= :p2' \ --expression-attribute-values '{ ":p1": {"N":"1.98"}, ":p2": {"N":"2.00"} }'