Expected (veraltet) - Amazon-DynamoDB

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 ConditionExpressionstattdessen verwenden..

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 mithilfe eines AND Operators 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 verwendeten ComparisonOperator ab.

    Beim Zahlentyp sind Wertevergleiche numerisch.

    Vergleiche von Zeichenkettenwerten für größer als, gleich oder kleiner als basieren auf Unicode mit der Binärkodierung UTF -8. Beispiel: a ist größer als A und a ist größer als B.

    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 der AttributeValueList. 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 | BETWEEN

    Es folgen Beschreibungen der einzelnen Vergleichsoperatoren.

    • EQ: Gleich. EQ wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.

      AttributeValueList kann nur ein AttributeValue-Element vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element ein AttributeValue-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. NE wird für alle Datentypen, einschließlich Listen und Zuordnungen, unterstützt.

      AttributeValueList kann nur ein AttributeValue vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz sein. Wenn ein Element einen AttributeValue 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"} ist nicht gleich {"NS":["6", "2", "1"]}.

    • LE : kleiner als oder gleich.

      AttributeValueList kann nur ein AttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein AttributeValue-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.

      AttributeValueList kann nur ein AttributeValue vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein AttributeValue-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.

      AttributeValueList kann nur ein AttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein AttributeValue-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.

      AttributeValueList kann nur ein AttributeValue-Element vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) sein. Wenn ein Element ein AttributeValue-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_NULL wird 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 mit NOT_NULL auswerten, ist das Ergebnis ein Boolescher Wert true. Dieses Ergebnis ist darauf zurückzuführen, dass das Attribut „a“ vorhanden ist. Sein Datentyp ist für den Vergleichsoperator NOT_NULL nicht relevant.

    • NULL: Das Attribut ist nicht vorhanden. NULL wird 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 mit NULL auswerten, ist das Ergebnis ein Boolescher Wert false. Dies ist darauf zurückzuführen, dass das Attribut „a“ vorhanden ist. Sein Datentyp ist für den Vergleichsoperator NULL nicht relevant.

    • CONTAINS: Prüft auf eine Teilsequenz oder einen Wert in einem Satz.

      AttributeValueList kann nur ein AttributeValue-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.

      CONTAINSwird für Listen unterstützt: Bei der Auswertung von a CONTAINS b "" kann a "" eine Liste sein; "b" kann jedoch kein Set, keine Map oder eine Liste sein.

    • NOT_CONTAINS: Prüft ein Element auf eine fehlende Teilsequenz oder einen fehlenden Wert in einem Satz.

      AttributeValueList kann nur ein AttributeValue-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 er does not keine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.

      NOT_ CONTAINS wird für Listen unterstützt: Bei der Auswertung von "a NOT CONTAINS b„kanna" "eine Liste sein;" b "kann jedoch kein Set, keine Map oder eine Liste sein.

    • BEGINS_WITH : Prüft auf ein Präfix.

      AttributeValueList kann nur ein AttributeValue vom 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.

      AttributeValueList kann nur ein oder mehrere AttributeValue-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.

      AttributeValueList muss zwei AttributeValue-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 ein AttributeValue-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 Exists true ist, prüft DynamoDB, ob der Attributwert in der Tabelle bereits vorhanden ist. Falls gefunden, wird die Bedingung mit True ausgewertet, andernfalls mit False.

    • Wenn Exists false ist, geht DynamoDB davon aus, dass der Attributwert not in 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 Exists ist true.

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.

ConditionExpressionStattdessen verwenden — Beispiel

Angenommen, Sie möchten ein Element in der Tabelle Music ändern, jedoch nur, wenn eine bestimmte Bedingung True ist. Sie könnten eine UpdateItem Anfrage mit einem Expected Parameter verwenden, wie in diesem AWS CLI Beispiel:

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"} }'