

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.

# Bedingte Legacy-Parameter für DynamoDB
<a name="LegacyConditionalParameters"></a>

Dieses Dokument bietet einen Überblick über bedingte Legacy-Parameter in DynamoDB und empfiehlt, stattdessen die neuen Ausdrucksparameter zu verwenden. Es behandelt Details zu Parametern wie AttributesToGet,, AttributeUpdates ConditionalOperator, Expected KeyConditions, QueryFilter ScanFilter, und und bietet Beispiele dafür, wie die neuen Ausdrucksparameter als Ersatz verwendet werden können.

**Wichtig**  
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](Expressions.md).   
DynamoDB lässt keine Mischung aus bedingten Legacy-Parametern und Ausdrucksparametern in einem einzigen Aufruf zu. Das Aufrufen der `Query`-Operation mit `AttributesToGet` und `ConditionExpression` löst beispielsweise einen Fehler aus.

Die folgende Tabelle zeigt die DynamoDB-APIs, die die älteren Parameter nach wie vor unterstützen, und enthält Angaben dazu, welche Ausdrucksparameter stattdessen zu verwenden sind. Diese Tabelle kann hilfreich sein, wenn Sie Ihre so Anwendungen aktualisieren möchten, dass sie Ausdrucksparameter verwenden.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html)

In den folgenden Abschnitten finden Sie weitere Informationen zu bedingten Legacy-Parametern.

**Topics**
+ [AttributesToGet (altmodisch)](LegacyConditionalParameters.AttributesToGet.md)
+ [AttributeUpdates (Vermächtnis)](LegacyConditionalParameters.AttributeUpdates.md)
+ [ConditionalOperator (Vermächtnis)](LegacyConditionalParameters.ConditionalOperator.md)
+ [Expected (veraltet)](LegacyConditionalParameters.Expected.md)
+ [KeyConditions (Vermächtnis)](LegacyConditionalParameters.KeyConditions.md)
+ [QueryFilter (Vermächtnis)](LegacyConditionalParameters.QueryFilter.md)
+ [ScanFilter (Vermächtnis)](LegacyConditionalParameters.ScanFilter.md)
+ [Schreiben von Bedingungen mit Legacy-Parametern](LegacyConditionalParameters.Conditions.md)

# AttributesToGet (altmodisch)
<a name="LegacyConditionalParameters.AttributesToGet"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [Stattdessen *ProjectionExpression* verwenden](#ProjectionExpression.instead). 

Der ältere Bedingungsparameter `AttributesToGet` ist ein Array von einem oder mehreren Attributen zum Abrufen von Daten aus DynamoDB. Wenn keine Attributnamen angegeben sind, werden alle Attribute zurückgegeben. Wenn eines der angeforderten Attribute nicht gefunden wird, ist es nicht im Abfrageergebnis enthalten.

Mit `AttributesToGet` können Sie Attribute vom Typ Liste oder Mapping abrufen. Es können jedoch keine einzelnen Elemente in einer Liste oder einem Mapping abgerufen werden.

Beachten Sie, dass `AttributesToGet` keine Auswirkung auf den Verbrauch des bereitgestellten Durchsatzes hat. DynamoDB ermittelt die verbrauchten Kapazitätseinheiten basierend auf der Elementgröße, nicht anhand der Menge der Daten, die an eine Anwendung zurückgegeben werden.

## *ProjectionExpression*Stattdessen verwenden — Beispiel
<a name="ProjectionExpression.instead"></a>

Angenommen, Sie möchten ein Element aus der Tabelle *Music* abrufen, wobei aber nur einige der Attribute zurückgegeben werden sollen. Sie könnten eine `GetItem` Anfrage mit einem `AttributesToGet` Parameter verwenden, wie in diesem AWS CLI Beispiel:

```
aws dynamodb get-item \
    --table-name Music \
    --attributes-to-get '["Artist", "Genre"]' \
    --key '{
        "Artist": {"S":"No One You Know"},
        "SongTitle": {"S":"Call Me Today"}
    }'
```

Sie können stattdessen `ProjectionExpression` verwenden.

```
aws dynamodb get-item \
    --table-name Music \
    --projection-expression "Artist, Genre" \
    --key '{
        "Artist": {"S":"No One You Know"},
        "SongTitle": {"S":"Call Me Today"}
    }'
```

# AttributeUpdates (Vermächtnis)
<a name="LegacyConditionalParameters.AttributeUpdates"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*UpdateExpression*stattdessen verwenden.](#UpdateExpression.instead). 

In einer `UpdateItem`-Operation enthält der ältere Bedingungsparameter `AttributeUpdates` die Namen der zu ändernden Attribute, die für jedes Attribut auszuführende Aktion und den jeweils neuen Wert. Wenn Sie ein Attribut aktualisieren, bei dem es sich um ein Indexschlüsselattribut für Indexe dieser Tabelle handelt, muss der Attributtyp mit dem in der `AttributesDefinition` der Tabellenbeschreibung definierten Indexschlüsseltyp übereinstimmen. Mit `UpdateItem` können Sie Nicht-Schlüsselattribute aktualisieren.

Attributwerte dürfen nicht Null sein. Attribute vom Typ Zeichenfolge und Binärwert müssen Längen haben, die größer als Null sind. Attribute vom Typ Satz dürfen nicht leer sein. Anfragen mit leeren Werten werden mit einer `ValidationException`-Ausnahme abgelehnt.

Jedes `AttributeUpdates`-Element besteht aus einem zu ändernden Attributnamen zusammen mit Folgendem:
+  `Value` – Der neue Wert, falls zutreffend, für dieses Attribut.
+  `Action` – Ein Wert, der angibt, wie die Aktualisierung durchzuführen ist. Diese Aktion ist nur für ein vorhandenes Attribut gültig, dessen Datentyp Zahl ist, oder das ein Satz ist. Verwenden Sie `ADD` nicht für andere Datentypen. 

  Wenn ein Element mit dem angegebenen Primärschlüssel in der Tabelle gefunden wird, führen die folgenden Werte die nachstehenden Aktionen aus:
  +  `PUT` – Fügt dem Element das angegebene Attribut hinzu. Wenn das Attribut bereits vorhanden ist, wird es durch den neuen Wert ersetzt. 
  +  `DELETE` – Entfernt das Attribut und den Wert, wenn für `DELETE` kein Wert angegeben ist. Der Datentyp des angegebenen Werts muss dem Datentyp des vorhandenen Werts entsprechen.

    Wenn ein Satz von Werten angegeben wird, müssen diese Werte vom alten Satz abgezogen werden. Beispiel: Wenn der Attributwert der Satz `[a,b,c]` war und die `DELETE`-Aktion `[a,c]` angibt, ist der endgültige Attributwert `[b]`. Einen leeren Satz anzugeben, führt zu einem Fehler.
  +  `ADD` – Fügt dem Element den angegebenen Wert hinzu, wenn das Attribut nicht bereits vorhanden ist. Wenn das Attribut nicht vorhanden ist, hängt das Verhalten von `ADD` vom Datentyp des Attributs ab:
    + Wenn das vorhandene Attribut und `Value` jeweils eine Zahl ist, dann wird `Value` mathematisch zum vorhandenen Attribut addiert. Wenn `Value` eine negative Zahl ist, wird sie von dem vorhandenen Attribut abgezogen.
**Anmerkung**  
Wenn Sie `ADD` einsetzen, um einen Zahlenwert für ein Element, das vor der Aktualisierung nicht vorhanden ist, zu erhöhen oder zu verringern, verwendet DynamoDB 0 als Anfangswert.  
Wenn Sie `ADD` für ein vorhandenes Element nutzen, um einen Attributwert, der vor der Aktualisierung nicht vorhanden ist, zu erhöhen oder zu verringern, verwendet DynamoDB `0` als Anfangswert. Angenommen, das Element, das Sie aktualisieren möchten, hat kein Attribut mit dem Namen *itemcount*, aber Sie möchten trotzdem die Zahl `ADD` mit `3` zu diesem Attribut addieren. DynamoDB erstellt das *itemcount*-Attribut, legt den Anfangswert auf `0` fest und addiert `3`. Das Ergebnis ist ein neues *itemcount*-Attribut mit dem Wert `3`.
    + Wenn der vorhandene Datentyp ein Satz ist und `Value` ebenfalls ein Satz ist, dann wird `Value` dem vorhandenen Satz angefügt. Beispiel: Wenn der Attributwert der Satz `[1,2]` ist und die `ADD`-Aktion `[3]` angibt, ist der endgültige Attributwert `[1,2,3]`. Ein Fehler tritt auf, wenn eine `ADD`-Aktion für ein festgelegtes Attribut angegeben wird und der angegebene Attributtyp nicht mit dem vorhandenen Satztyp übereinstimmt. 

      Beide Sätze müssen denselben primitiven Datentyp besitzen. Wenn es sich bei dem vorhandenen Datentyp beispielsweise um einen Satz von Zeichenfolgen handelt, muss `Value` ebenfalls ein Zeichenfolgensatz sein.

  Wenn kein Element mit dem angegebenen Primärschlüssel in der Tabelle gefunden wird, führen die folgenden Werte die nachstehenden Aktionen aus:
  +  `PUT` – Veranlasst DynamoDB, ein neues Element mit dem angegebenen Primärschlüssel zu erstellen, und fügt dann das Attribut hinzu. 
  +  `DELETE` – Nichts passiert, da Attribute nicht aus einem nicht vorhandenen Element gelöscht werden können. Die Operation ist erfolgreich, aber DynamoDB erstellt kein neues Element.
  +  `ADD` – Veranlasst DynamoDB, ein Element mit dem bereitgestellten Primärschlüssel und einer Zahl (oder Zahlensätzen) für den Attributwert zu erstellen. Die einzigen zulässigen Datentypen sind Zahl und Zahlensatz.

Wenn Sie Attribute, die Teil eines Indexschlüssels sind, bereitstellen, müssen die Datentypen dieser Attribute mit den Typen des Schemas in der Attributdefinition der Tabelle übereinstimmen.

## *UpdateExpression*Stattdessen verwenden — Beispiel
<a name="UpdateExpression.instead"></a>

Angenommen, Sie möchten ein Element in der Tabelle *Music* ändern. Sie könnten eine `UpdateItem` Anfrage mit einem `AttributeUpdates` Parameter verwenden, wie in diesem AWS CLI Beispiel:

```
aws dynamodb update-item \
    --table-name Music \
    --key '{
        "SongTitle": {"S":"Call Me Today"}, 
        "Artist": {"S":"No One You Know"}
    }' \
    --attribute-updates '{
        "Genre": {
            "Action": "PUT", 
            "Value": {"S":"Rock"}
        }   
    }'
```

Sie können stattdessen `UpdateExpression` verwenden.

```
aws dynamodb update-item \
    --table-name Music \
    --key '{
        "SongTitle": {"S":"Call Me Today"}, 
        "Artist": {"S":"No One You Know"}
    }' \
    --update-expression 'SET Genre = :g' \ 
    --expression-attribute-values '{
        ":g": {"S":"Rock"}
    }'
```

# ConditionalOperator (Vermächtnis)
<a name="LegacyConditionalParameters.ConditionalOperator"></a>

**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](Expressions.md). 

Der alte Bedingungsparameter `ConditionalOperator` ist ein logischer Operator, der auf die Bedingungen in einer `Expected`-, `QueryFilter`- oder `ScanFilter`-Zuordnung anzuwenden ist:
+ AND – Wenn alle Bedingungen mit True ausgewertet werden, wird die gesamte Zuordnung mit True ausgewertet.
+ OR – Wenn mindestens eine Bedingung mit True ausgewertet wird, wird die gesamte Zuordnung mit True ausgewertet.

Wenn Sie `ConditionalOperator` nicht angeben, ist `AND` die Standardeinstellung.

Die Operation wird nur dann erfolgreich ausgeführt, wenn die gesamte Zuordnung mit True ausgewertet wird.

**Anmerkung**  
Dieser Parameter unterstützt keine Attribute vom Typ Liste oder Zuordnung.

# Expected (veraltet)
<a name="LegacyConditionalParameters.Expected"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*ConditionExpression*stattdessen verwenden.](#Expected.instead). 

Der ältere bedingte Parameter `Expected` ist ein bedingter Block für eine `UpdateItem` Operation. `Expected`ist eine Karte von attribute/condition 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 das`ConditionalOperator`-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 Zeichenfolgenwerten für größer als, gleich oder kleiner als basieren auf Unicode mit UTF-8-Binärkodierung. 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.

    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.

     `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\$1CONTAINS 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. 

     `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.

## Verwenden Sie *ConditionExpression*stattdessen — Beispiel
<a name="Expected.instead"></a>

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

# KeyConditions (Vermächtnis)
<a name="LegacyConditionalParameters.KeyConditions"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*KeyConditionExpression*stattdessen verwenden.](#KeyConditionExpression.instead). 

Der alte Bedingungsparameter `KeyConditions` enthält Auswahlkriterien für eine `Query`-Operation. Für eine Abfrage in einer Tabelle sind nur Bedingungen für die Primärschlüsselattribute der Tabelle möglich. Sie müssen den Namen und Wert des Partitionsschlüssels als `EQ`-Bedingung angeben. Sie können optional eine zweite Bedingung für den Sortierschlüssel angeben.

**Anmerkung**  
Wenn Sie keine Sortierschlüsselbedingung festlegen, werden alle Elemente, die mit dem Partitionsschlüssel übereinstimmen, abgerufen. Wenn ein `FilterExpression` oder `QueryFilter` vorhanden ist, wird er angewendet, nachdem die Elemente abgerufen wurden.

Für eine Abfrage in einem Index sind nur Bedingungen für die Indexschlüsselattribute möglich. Sie müssen den Namen und Wert des Indexpartitionsschlüssels als `EQ`-Bedingung angeben. Sie können optional eine zweite Bedingung für den Indexsortierschlüssel angeben.

Jedes `KeyConditions`-Element besteht aus einem zu vergleichenden Attributnamen zusammen mit Folgendem:
+  `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 Zeichenfolgenwerten für größer als, gleich oder kleiner als basieren auf Unicode mit UTF-8-Binärkodierung. Beispiel: `a` ist größer als `A` und `a` ist größer als `B`.

  Beim Binärtyp betrachtet DynamoDB beim Vergleichen der binären Werte jedes Byte der Binärdaten ohne Vorzeichen.
+  `ComparisonOperator` – Ein Vergleichsoperator zum Auswerten der Attribute. Zum Beispiel: ist gleich, größer als, kleiner als.

  Für `KeyConditions` werden nur die folgenden Vergleichsoperatoren unterstützt:

   `EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN` 

  Es folgen Beschreibungen dieser Vergleichsoperatoren.
  +  `EQ` : gleich. 

     `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"}` 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, `{"N":"6"}` entspricht nicht `{"NS":["6", "2", "1"]}`.
  +  `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).
  +  `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 entspricht `{"N":"6"}` nicht `{"NS":["6", "2", "1"]}`. 

## *KeyConditionExpression*Stattdessen verwenden — Beispiel
<a name="KeyConditionExpression.instead"></a>

Angenommen, Sie möchten mehrere Elemente mit demselben Partitionsschlüssel aus der Tabelle *Music* abrufen. Sie könnten eine `Query` Anfrage mit einem `KeyConditions` Parameter verwenden, wie in diesem AWS CLI Beispiel:

```
aws dynamodb query \
    --table-name Music \
    --key-conditions '{
        "Artist":{
            "ComparisonOperator":"EQ",
            "AttributeValueList": [ {"S": "No One You Know"} ]
        },
        "SongTitle":{
            "ComparisonOperator":"BETWEEN",
            "AttributeValueList": [ {"S": "A"}, {"S": "M"} ]
        }
    }'
```

Sie können stattdessen `KeyConditionExpression` verwenden.

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":a": {"S": "No One You Know"}, 
        ":t1": {"S": "A"}, 
        ":t2": {"S": "M"}
    }'
```

# QueryFilter (Vermächtnis)
<a name="LegacyConditionalParameters.QueryFilter"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*FilterExpression*stattdessen verwenden.](#FilterExpression.instead). 

In einer `Query`-Operation handelt es sich bei dem alten Bedingungsparameter `QueryFilter` um eine Bedingung, die die Abfrageergebnisse auswertet, nachdem die Elemente gelesen wurden, und die nur die gewünschten Werte zurückgibt.

Dieser Parameter unterstützt keine Attribute vom Typ Liste oder Zuordnung.

**Anmerkung**  
Ein `QueryFilter` wird angewendet, nachdem die Elemente gelesen wurden. Der Filterprozess belegt keine zusätzlichen Lesekapazitätseinheiten.

Wenn Sie mehr als eine Bedingung im `QueryFilter`-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 das[ConditionalOperator (Vermächtnis)](LegacyConditionalParameters.ConditionalOperator.md)-Parameter auf ODER zu den Bedingungen verwenden. In diesem Fall müssen nicht alle, sondern mindestens eine der Bedingungen mit True ausgewertet werden.)

Hinweis: `QueryFilter` lässt keine Schlüsselattribute zu. Sie können keine Filterbedingung für einen Partitionsschlüssel oder Sortierschlüssel definieren.

Jedes `QueryFilter`-Element besteht aus einem zu vergleichenden Attributnamen zusammen mit Folgendem:
+  `AttributeValueList` – Ein oder mehrere Werte, die anhand des angegebenen Attributs ausgewertet werden sollen. Die Anzahl der Werte in der Liste hängt von dem in `ComparisonOperator` angegebenen Operator ab.

  Beim Zahlentyp sind Wertevergleiche numerisch.

  Vergleiche von Zeichenfolgenwerten für größer als, gleich oder kleiner als basieren auf UTF-8-Binärkodierung. 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.

  Informationen zum Angeben von Datentypen in JSON finden Sie unter [DynamoDB Low-Level-API](Programming.LowLevelAPI.md).
+  `ComparisonOperator` – Ein Vergleichsoperator zum Auswerten der Attribute. Zum Beispiel: ist gleich, größer als, kleiner als.

  Die folgenden Vergleichsoperatoren sind verfügbar:

   `EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN` 

## *FilterExpression*Stattdessen verwenden — Beispiel
<a name="FilterExpression.instead"></a>

Angenommen, Sie möchten die Tabelle *Music* abfragen und wenden eine Bedingung auf die übereinstimmenden Elemente an. Sie können eine `Query`-Anforderung mit dem Parameter `QueryFilter` wie in diesem AWS CLI -Beispiel verwenden:

```
aws dynamodb query \
    --table-name Music \
    --key-conditions '{
        "Artist": {
            "ComparisonOperator": "EQ",
            "AttributeValueList": [ {"S": "No One You Know"} ]
        }   
    }' \
    --query-filter '{
        "Price": {
            "ComparisonOperator": "GT",
            "AttributeValueList": [ {"N": "1.00"} ]
        }   
    }'
```

Sie können stattdessen `FilterExpression` verwenden.

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a' \
    --filter-expression 'Price > :p' \
    --expression-attribute-values '{
        ":p": {"N":"1.00"}, 
        ":a": {"S":"No One You Know"}
    }'
```

# ScanFilter (Vermächtnis)
<a name="LegacyConditionalParameters.ScanFilter"></a>

**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](Expressions.md). Spezifische Informationen zu dem neuen Parameter, der diesen ersetzt, finden Sie unter [*FilterExpression*stattdessen verwenden.](#FilterExpression2.instead). 

In einer `Scan`-Operation handelt es sich bei dem alten Bedingungsparameter `ScanFilter` um eine Bedingung, die die Abfrageergebnisse auswertet und die nur die gewünschten Werte zurückgibt.

**Anmerkung**  
Dieser Parameter unterstützt keine Attribute vom Typ Liste oder Zuordnung.

Wenn Sie mehr als eine Bedingung im `ScanFilter`-Mapping angeben, müssen alle Bedingungen standardmäßig mit True ausgewertet werden. Mit anderen Worten, die Bedingungen stimmen ANDed überein. (Sie können das [ConditionalOperator (Vermächtnis)](LegacyConditionalParameters.ConditionalOperator.md)-Parameter auf ODER zu den Bedingungen verwenden. In diesem Fall müssen nicht alle, sondern mindestens eine der Bedingungen mit True ausgewertet werden.)

Jedes `ScanFilter`-Element besteht aus einem zu vergleichenden Attributnamen zusammen mit Folgendem:
+  `AttributeValueList` – Ein oder mehrere Werte, die anhand des angegebenen Attributs ausgewertet werden sollen. Die Anzahl der Werte in der Liste hängt von dem in `ComparisonOperator` angegebenen Operator ab.

  Beim Zahlentyp sind Wertevergleiche numerisch.

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

  Beim Binärtyp betrachtet DynamoDB beim Vergleichen der binären Werte jedes Byte der Binärdaten ohne Vorzeichen.

  Informationen zum Angeben von Datentypen in JSON finden Sie unter [DynamoDB Low-Level-API](Programming.LowLevelAPI.md).
+  `ComparisonOperator` – Ein Vergleichsoperator zum Auswerten der Attribute. Zum Beispiel: ist gleich, größer als, kleiner als.

  Die folgenden Vergleichsoperatoren sind verfügbar:

   `EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN` 

## Verwenden Sie *FilterExpression*stattdessen — Beispiel
<a name="FilterExpression2.instead"></a>

Angenommen, Sie möchten die Tabelle *Music* scannen und wenden eine Bedingung auf die übereinstimmenden Elemente an. Sie können eine `Scan`-Anforderung mit dem Parameter `ScanFilter` wie in diesem AWS CLI -Beispiel verwenden:

```
aws dynamodb scan \
    --table-name Music \
    --scan-filter '{
        "Genre":{
            "AttributeValueList":[ {"S":"Rock"} ],
            "ComparisonOperator": "EQ"
        }
    }'
```

Sie können stattdessen `FilterExpression` verwenden.

```
aws dynamodb scan \
    --table-name Music \
    --filter-expression 'Genre = :g' \
    --expression-attribute-values '{
        ":g": {"S":"Rock"} 
    }'
```

# Schreiben von Bedingungen mit Legacy-Parametern
<a name="LegacyConditionalParameters.Conditions"></a>

**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](Expressions.md).

Im folgenden Abschnitt wird beschrieben, wie Sie Bedingungen für die Verwendung mit Legacy-Parametern, wie `Expected`, `QueryFilter` und `ScanFilter`, schreiben.

**Anmerkung**  
Neue Anwendungen sollten stattdessen Ausdrucksparameter verwenden. Weitere Informationen finden Sie unter [Verwenden von Ausdrücken in DynamoDB](Expressions.md).

## Einfache Bedingungen
<a name="LegacyConditionalParameters.Simple"></a>

Mit Attributwerten können Sie Bedingungen für Vergleiche mit Tabellenattributen erstellen. Eine Bedingung wird immer mit True oder False ausgewertet und besteht aus Folgendem:
+ `ComparisonOperator` – größer als, kleiner als, gleich usw.
+ `AttributeValueList` (optional) – Attributwerte für den Vergleich. Abhängig vom verwendeten `ComparisonOperator` enthält `AttributeValueList` möglicherweise einen, zwei oder mehr Werte oder ist nicht vorhanden.

In den folgenden Abschnitten werden die verschiedenen Vergleichsoperatoren beschrieben. Außerdem finden Sie einige Beispiele, wie Sie sie in Bedingungen verwenden können.

### Vergleichsoperatoren ohne Attributwerte
<a name="LegacyConditionalParameters.Conditions.Simple.NoAttributeValues"></a>
+ `NOT_NULL` – True, wenn ein Attribut vorhanden ist.
+ `NULL` – True, wenn das Attribut nicht vorhanden ist.

Verwenden Sie diese Operatoren, um zu überprüfen, ob ein Attribut vorhanden oder nicht vorhanden ist. Da es keinen Wert gibt, mit dem verglichen werden soll, geben Sie `AttributeValueList` nicht an.

**Beispiel**

Der folgende Ausdruck wird mit True ausgewertet, wenn das Attribut *Dimensions* vorhanden ist.

```
...
    "Dimensions": {
         ComparisonOperator: "NOT_NULL"
    }
...
```

### Vergleichsoperatoren mit einem Attributwert
<a name="LegacyConditionalParameters.Conditions.Simple.OneAttributeValue"></a>
+ `EQ` – True, wenn ein Attribut gleich einem Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz enthalten. Wenn ein Element einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein. Beispielsweise ist die Zeichenfolge `"3"` nicht gleich der Zahl `3`. Die Zahl `3` ist auch nicht gleich dem Zahlensatz `[3, 2, 1]`. 
+ `NE` – True, wenn ein Attribut nicht gleich einem Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl, Binärwert, Zeichenfolgensatz, Zahlensatz und Binärwertesatz enthalten. Wenn ein Element einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.
+ `LE` – True, wenn ein Attribut kleiner als oder gleich einem Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Wenn ein Element einen `AttributeValue` eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.
+ `LT` – True, wenn ein Attribut kleiner als ein Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Wenn ein Element einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.
+ `GE` – True, wenn ein Attribut größer als oder gleich einem Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Wenn ein Element einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.
+ `GT` – True, wenn ein Attribut größer als ein Wert ist.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Wenn ein Element einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.
+ `CONTAINS` – True, wenn ein Wert in einem Satz vorhanden ist oder wenn ein Wert einen anderen enthält.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Wenn das Zielattribut des Vergleichs eine Zeichenfolge ist, dann prüft der Operator, ob eine Teilzeichenfolge übereinstimmt. Wenn das Zielattribut des Vergleichs vom Typ Binär ist, sucht der Operator nach einer Teilsequenz des Ziels, die mit der Eingabe übereinstimmt. Wenn das Zielattribut des Vergleichs ein Satz ist, dann wertet der Operator mit True aus, wenn er eine genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.
+ `NOT_CONTAINS` – True, wenn ein Wert in einem Satz *nicht* vorhanden ist oder wenn ein Wert keinen anderen enthält.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. 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, dann wertet der Operator mit True aus, wenn er *keine* genaue Übereinstimmung mit einem beliebigen Mitglied des Satzes findet.
+ `BEGINS_WITH` – True, wenn die ersten Zeichen eines Attributs mit dem angegebenen Wert übereinstimmen. Verwenden Sie diesen Operator nicht für den Vergleich von Zahlen.

  `AttributeValueList` kann nur einen Wert vom Typ Zeichenfolge oder Binärwert (keine Zahl oder Satz) enthalten. Das Zielattribut des Vergleichs muss vom Typ Zeichenfolge oder Binärzahl sein (keine Zahl bzw. kein Satz).

Verwenden Sie diese Operatoren, um ein Attribut mit einem Wert zu vergleichen. Sie müssen eine `AttributeValueList` angeben, die aus einem einzigen Wert besteht. Für die meisten Operatoren muss dieser Wert ein Skalarwert sein. Die Operatoren `EQ` und `NE` unterstützen jedoch auch Sätze.

**Beispiele**

Die folgenden Ausdrücke werden mit True ausgewertet, wenn: 
+ der Produktpreis größer als 100 ist.

  ```
  ...
      "Price": {
          ComparisonOperator: "GT",
          AttributeValueList: [ {"N":"100"} ]
      }
  ...
  ```
+ eine Produktkategorie mit „Bo“ beginnt.

  ```
  ...
      "ProductCategory": {
          ComparisonOperator: "BEGINS_WITH",
          AttributeValueList: [ {"S":"Bo"} ]
      }
  ...
  ```
+ ein Produkt entweder in Rot, Grün oder Schwarz erhältlich ist:

  ```
  ...
      "Color": {
          ComparisonOperator: "EQ",
          AttributeValueList: [
              [ {"S":"Black"}, {"S":"Red"}, {"S":"Green"} ]
          ]
      }
  ...
  ```
**Anmerkung**  
Beim Vergleichen von Satzdatentypen ist die Reihenfolge der Elemente unerheblich. DynamoDB sendet nur die Elemente mit demselben Wertesatz, unabhängig von der Reihenfolge, in der Sie sie in Ihrer Anforderung angeben.

### Vergleichsoperatoren mit zwei Attributwerten
<a name="LegacyConditionalParameters.Conditions.Simple.TwoAttributeValues"></a>
+ `BETWEEN` – True, wenn ein Wert zwischen einer unteren und einer oberen Grenze liegt, Endpunkte eingeschlossen.

  `AttributeValueList` muss zwei 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 einen Wert eines anderen Typs enthält, als in der Anforderung angegeben, stimmt der Wert nicht überein.

Verwenden Sie diesen Operator, um zu bestimmen, ob ein Attributwert innerhalb eines Bereichs liegt. Die `AttributeValueList` muss zwei skalare Elemente desselben Typs enthalten, und zwar Zeichenfolge, Zahl oder Binärwert.

 **Beispiel**

Der folgende Ausdruck wird mit True ausgewertet, wenn ein Produktpreis zwischen 100 und 200 liegt.

```
...
    "Price": {
        ComparisonOperator: "BETWEEN",
        AttributeValueList: [ {"N":"100"}, {"N":"200"} ]
    }
...
```

### Vergleichsoperatoren mit *n* Attributwerten
<a name="LegacyConditionalParameters.Conditions.Simple.NAttributeValues"></a>
+ `IN` – True, wenn ein Wert gleich einem der Werte in einer Aufzählung ist. Es werden nur skalare Werte und keine Sätze in der Liste unterstützt. Das Zielattribut muss vom selben Typ sein und mit dem genauen Wert übereinstimmen.

  `AttributeValueList` kann nur ein oder mehrere Elemente vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Diese Attribute werden mit einem vorhandenen Nicht-Satztypattribut eines Elements verglichen. Wenn ein *beliebiges* Element des Eingabesatzes im Elementattribut vorhanden ist, wird der Ausdruck mit True ausgewertet.

  `AttributeValueList` kann nur ein oder mehrere Werte vom Typ Zeichenfolge, Zahl oder Binärwert (kein Satztyp) enthalten. Das Zielattribut des Vergleichs muss vom selben Typ sein und mit dem genauen Wert übereinstimmen. Eine Zeichenfolge stimmt niemals mit einem Zeichenfolgensatz überein.

Verwenden Sie diesen Operator, um zu ermitteln, ob sich der angegebene Wert innerhalb einer Aufzählung befindet. Sie können eine beliebige Anzahl von Skalarwerten in `AttributeValueList` angeben, diese müssen allerdings denselben Datentyp aufweisen.

 **Beispiel**

Der folgende Ausdruck wird mit True ausgewertet, wenn der Wert für *ID* 201, 203 oder 205 ist.

```
...
    "Id": {
        ComparisonOperator: "IN",
        AttributeValueList: [ {"N":"201"}, {"N":"203"}, {"N":"205"} ]
    }
...
```

## Verwenden mehrerer Bedingungen
<a name="LegacyConditionalParameters.Conditions.Multiple"></a>

Mit DynamoDB können Sie mehrere Bedingungen zu komplexen Ausdrücken kombinieren. Dazu geben Sie mindestens zwei Ausdrücke mit einem optionalen [ConditionalOperator (Vermächtnis)](LegacyConditionalParameters.ConditionalOperator.md) an.

Wenn Sie mehr als eine Bedingung angeben, müssen *alle* Bedingungen mit True ausgewertet werden, damit der gesamte Ausdruck mit True ausgewertet wird. Mit anderen Worten, es wird eine implizite *AND*-Operation ausgeführt.

 **Beispiel**

Der folgende Ausdruck wird mit True ausgewertet, wenn ein Produkt ein Buch mit mindestens 600 Seiten ist. Beide Bedingungen müssen mit True ausgewertet werden, da sie implizit durch *AND* verknüpft sind.

```
... 
    "ProductCategory": { 
        ComparisonOperator: "EQ",
        AttributeValueList: [ {"S":"Book"} ]
    },
    "PageCount": { 
        ComparisonOperator: "GE",
        AttributeValueList: [ {"N":600"} ]
    }
...
```

Mithilfe von [ConditionalOperator (Vermächtnis)](LegacyConditionalParameters.ConditionalOperator.md) können Sie verdeutlichen, dass eine *AND*-Operation ausgeführt wird. Das folgende Beispiel verhält sich ähnlich wie das vorherige.

```
...   
    "ConditionalOperator" : "AND",
    "ProductCategory": { 
        "ComparisonOperator": "EQ",
        "AttributeValueList": [ {"N":"Book"} ]
    },
    "PageCount": { 
        "ComparisonOperator": "GE",
        "AttributeValueList": [ {"N":600"} ]
    }
...
```

Sie können `ConditionalOperator` auch auf *OR* festlegen, was bedeutet, dass *mindestens eine* der Bedingungen mit True ausgewertet werden muss.

 **Beispiel**

 Der folgende Ausdruck wird mit True ausgewertet, wenn ein Produkt eine Mountainbike ist, wenn es eine bestimmte Marke ist oder wenn der Preis größer als 100 ist.

```
... 
    ConditionalOperator : "OR",
    "BicycleType": { 
        "ComparisonOperator": "EQ",
        "AttributeValueList": [ {"S":"Mountain" ]
    },
    "Brand": { 
        "ComparisonOperator": "EQ",
        "AttributeValueList": [ {"S":"Brand-Company A" ]
    },
    "Price": { 
        "ComparisonOperator": "GT",
        "AttributeValueList": [ {"N":"100"} ]
    }
...
```

**Anmerkung**  
In einem komplexen Ausdruck werden die Bedingungen der Reihe nach verarbeitet, angefangen von der ersten bis zur letzten Bedingung.  
Sie können nicht sowohl AND, als auch OR in einem einzigen Ausdruck verwenden.

## Andere Bedingungsoperatoren
<a name="LegacyConditionalParameters.Conditions.Other"></a>

In früheren Versionen von DynamoDB verhielt sich der Parameter `Expected` für bedingte Schreibvorgänge anders. Jedes Element im `Expected`-Mapping stellte einen Attributnamen dar, den DynamoDB zusammen mit Folgendem prüfen sollte:
+ `Value` – ein Wert für den Vergleich mit dem Attribut.
+ `Exists` – bestimmt, ob der Wert vorhanden ist, bevor die Operation ausgeführt wird.

Die Optionen `Value` und `Exists` werden weiterhin in DynamoDB unterstützt. Sie ermöglichen allerdings nur eine Prüfung auf eine Gleichheitsbedingung oder darauf, ob ein Attribut vorhanden ist. Es wird empfohlen, stattdessen `ComparisonOperator` und `AttributeValueList` zu verwenden, da Sie mit diesen Optionen einen umfassenderen Bereich von Bedingungen erstellen können.

**Example**  
Ein `DeleteItem` kann prüfen, ob ein Buch nicht mehr veröffentlicht wird, und es nur löschen, wenn die Bedingung erfüllt ist. Hier finden Sie ein AWS CLI -Beispiel mit einer Legacy-Bedingung:  

```
aws dynamodb delete-item \
    --table-name ProductCatalog \
    --key '{
        "Id": {"N":"600"}
    }' \
    --expected '{
        "InPublication": { 
            "Exists": true, 
            "Value": {"BOOL":false} 
        } 
    }'
```
Im folgenden Beispiel werden dieselben Aktionen ausgeführt, allerdings ohne Legacy-Bedingung:  

```
aws dynamodb delete-item \
    --table-name ProductCatalog \
    --key '{
        "Id": {"N":"600"}
    }' \
    --expected '{
        "InPublication": { 
            "ComparisonOperator": "EQ", 
            "AttributeValueList": [ {"BOOL":false} ]
        } 
    }'
```

**Example**  
Eine `PutItem`-Operation kann ein vorhandenes Element mit denselben Primärschlüsselattributen vor dem Überschreiben schützen. Hier finden Sie ein -Beispiel mit einer Legacy-Bedingung:  

```
aws dynamodb put-item \
    --table-name ProductCatalog \
    --item '{
      "Id": {"N":"500"},
        "Title": {"S":"Book 500 Title"}
    }' \
    --expected '{
        "Id": { "Exists": false } 
    }'
```
Im folgenden Beispiel werden dieselben Aktionen ausgeführt, allerdings ohne Legacy-Bedingung:  

```
aws dynamodb put-item \
    --table-name ProductCatalog \
    --item '{
      "Id": {"N":"500"},
        "Title": {"S":"Book 500 Title"}
    }' \
    --expected '{
        "Id": { "ComparisonOperator": "NULL" } 
    }'
```

**Anmerkung**  
Verwenden Sie für Bedingungen im `Expected`-Mapping die Legacy-Optionen `Value` und `Exists` nicht gemeinsam mit `ComparisonOperator` und `AttributeValueList`. Andernfalls tritt beim bedingten Schreibvorgang ein Fehler auf.