Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB - 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.

Bedingungs- und Filterausdrücke, Operatoren und Funktionen in DynamoDB

Um Daten in einer DynamoDB-Tabelle zu bearbeiten, verwenden Sie die Operationen PutItemUpdateItem, undDeleteItem. Für diese Datenmanipulationsoperationen können Sie einen Bedingungsausdruck angeben, um zu ermitteln, welche Elemente geändert werden sollten. Wenn der Bedingungsausdruck als wahr ausgewertet wird, ist der Vorgang erfolgreich. Andernfalls schlägt die Operation fehl.

In diesem Abschnitt werden die integrierten Funktionen und Schlüsselwörter zum Schreiben von Filter- und Bedingungsausdrücken in Amazon DynamoDB erörtert. Ausführlichere Informationen zu Funktionen und Programmierung mit DynamoDB finden Sie unter Programmieren mit DynamoDB und dem AWS SDKs und in der APIDynamoDB-Referenz.

Syntax für Filter- und Bedingungsausdrücke

In der folgenden Syntaxzusammenfassung ist ein operand kann wie folgt aussehen:

  • Ein Attributname auf oberster Ebene, z. B. Id, Title, Description oder ProductCategory

  • Ein Dokumentpfad, der auf ein verschachteltes Attribut verweist

condition-expression ::= operand comparator operand | operand BETWEEN operand AND operand | operand IN ( operand (',' operand (, ...) )) | function | condition AND condition | condition OR condition | NOT condition | ( condition ) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path) | attribute_not_exists (path) | attribute_type (path, type) | begins_with (path, substr) | contains (path, operand) | size (path)

Durchführen von Vergleichen

Verwenden Sie diese Komparatoren, um einen Operanden mit einem einzelnen Wert zu vergleichen:

  • a = b— Stimmt, wenn a ist gleich b.

  • a <> b— Stimmt wenn a ist nicht gleich b.

  • a < b— Stimmt wenn a ist kleiner als b.

  • a <= b— Stimmt wenn a ist kleiner als oder gleich b.

  • a > b— Stimmt wenn a ist größer als b.

  • a >= b— Stimmt wenn a ist größer als oder gleich b.

Verwenden Sie die Schlüsselwörter BETWEEN und IN, um einen Operanden mit einer Reihe von Werten oder einer Aufzählung von Werten zu vergleichen:

  • a BETWEEN b AND c— Stimmt wenn a ist größer als oder gleich b, und kleiner als oder gleich c.

  • a IN (b, c, d) — Stimmt wenn a entspricht einem beliebigen Wert in der Liste, z. B. einem von b, c, oder d. Die Liste kann bis zu 100 durch Kommas getrennte Werte enthalten.

Funktionen

Verwenden Sie die folgenden Funktionen, um zu bestimmen, ob ein Attribut in einem Element vorhanden ist, oder um den Wert eines Attributs zu bewerten. Bei Funktionsnamen wird zwischen Groß- und Kleinschreibung unterschieden. Bei einem verschachtelten Attribut müssen Sie den vollständigen Dokumentpfad angeben.

Funktion Beschreibung

attribute_exists (path)

True, wenn das Element das von path angegebene Attribut enthält.

Beispiel: Prüfung, ob ein Element in der Tabelle Product über ein Seitenansichtsbild verfügt.

  • attribute_exists (#Pictures.#SideView)

attribute_not_exists (path)

True, wenn das Element das von path angegebene Attribut nicht enthält.

Beispiel: Prüfung, ob ein Element über ein Manufacturer-Attribut verfügt

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

True, wenn das Attribut am angegebenen Pfad einen bestimmten Datentyp hat. Der Parameter type muss einer der folgenden Werte aufweisen:

  • S – Zeichenfolge

  • SS – Zeichenfolgensatz

  • N – Zahl

  • NS – Zahlensatz

  • B – Binary

  • BS – Binärzahlensatz

  • BOOL – Boolean

  • NULL – Nullwert

  • L – Liste

  • M – Zuordnung

Sie müssen einen Ausdrucksattributwert für den Parameter type verwenden.

Beispiel: Prüfung, ob das Attribut QuantityOnHand vom Typ Liste ist. In diesem Beispiel ist :v_sub ein Platzhalter für die Zeichenfolge L.

  • attribute_type (ProductReviews.FiveStar, :v_sub)

Sie müssen einen Ausdrucksattributwert für den Parameter type verwenden.

begins_with (path, substr)

True, wenn das von path angegebene Attribut mit einer bestimmten Teilzeichenfolge beginnt.

Beispiel: Prüfen Sie, ob die ersten Zeichen des URL Vorderansichtsbildes http://

  • begins_with (Pictures.FrontView, :v_sub)

Der Ausdrucksattributwert :v_sub ist ein Platzhalter für http://.

contains (path, operand)

True, wenn das von path angegebene Attribut Folgendes ist:

  • ein String, der eine bestimmte Teilzeichenfolge enthält

  • ein Set, der ein bestimmtes Element innerhalb des Satzes enthält

  • ein List, der ein bestimmtes Element innerhalb der Liste enthält

Wenn das von path angegebene Attribut eine String ist, muss der operand String sein. Wenn das von path angegebene Attribut Set ist muss operand der Elementtyp des Satzes sein.

Der Pfad und der Operand müssen unterschiedlich sein. Das heißt, bei contains (a, a) wird ein Fehler zurückgegeben.

Beispiel: Prüfung, ob das Attribut Brand die Teilzeichenfolge Company enthält.

  • contains (Brand, :v_sub)

Der Ausdrucksattributwert :v_sub ist ein Platzhalter für Company.

Beispiel: Prüfung, ob das Produkt in rot verfügbar ist.

  • contains (Color, :v_sub)

Der Ausdrucksattributwert :v_sub ist ein Platzhalter für Red.

size (path)

Gibt eine Zahl zurück, die für die Größe eines Attributs steht. Die folgenden sind gültige Datentypen, die mit size verwendet werden können.

Wenn das Attribut vom Typ String ist, gibt size die Länge der Zeichenfolge zurück.

Beispiel: Prüfung, ob die Zeichenfolge Brand kleiner oder gleich 20 Zeichen ist. Der Ausdrucksattributwert :v_sub ist ein Platzhalter für 20.

  • size (Brand) <= :v_sub

Wenn das Attribut vom Typ Binary ist, gibt size die Anzahl der Bytes im Attributwert zurück.

Beispiel: Angenommen, das Element ProductCatalog verfügt über ein binäres Attribut mit der Bezeichnung VideoClip, das ein kurzes Video über das betreffende Produkt enthält. Der folgende Ausdruck überprüft, ob VideoClip 64.000 Byte überschreitet. Der Ausdrucksattributwert :v_sub ist ein Platzhalter für 64000.

  • size(VideoClip) > :v_sub

Wenn das Attribut vom Typ Set ist, gibt size die Anzahl der Elemente im Satz zurück.

Beispiel: Prüfung, ob das Produkt in mehr als einer Farbe verfügbar ist. Der Ausdrucksattributwert :v_sub ist ein Platzhalter für 1.

  • size (Color) < :v_sub

Wenn das Attribut vom Typ List oder Map ist, gibt size die Anzahl der untergeordneten Elemente zurück.

Beispiel: Prüfung, ob die Anzahl der OneStar-Rezensionen einen bestimmten Grenzwert überschritten hat. Der Ausdrucksattributwert :v_sub ist ein Platzhalter für 3.

  • size(ProductReviews.OneStar) > :v_sub

Logische Auswertungen

Verwenden Sie die Schlüsselwörter AND, OR und NOT, um logische Auswertungen durchzuführen. In der folgenden Liste a and b stellen Bedingungen dar, die bewertet werden müssen.

  • a AND b— Stimmt, wenn a and b sind beide wahr.

  • a OR b— Stimmt, wenn entweder a or b (oder beide) sind wahr.

  • NOT a— Stimmt, wenn a ist falsch. Falsch wenn a ist wahr.

Das Folgende ist ein Codebeispiel für AND eine Operation.

dynamodb-local (*)> select * from exprtest where a > 3 and a < 5;

Klammern

Verwenden Sie Klammern, um die Priorität einer logischen Auswertung zu ändern. Nehmen wir zum Beispiel an, dass Bedingungen a and b sind wahr, und diese Bedingung c ist falsch. Der folgenden Ausdruck ergibt True:

  • a OR b AND c

Wenn Sie jedoch eine Bedingung in Klammern setzen, wird diese zuerst ausgewertet. Folgendes ergibt z. B. False:

  • (a OR b) AND c

Anmerkung

Sie können Klammern in einem Ausdruck schachteln. Die innersten Klammern werden zuerst ausgewertet.

Im Folgenden finden Sie ein Codebeispiel mit Klammern in einer logischen Auswertung.

dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or ( a = 5 and c = “coffee”);

Priorität in Bedingungen

DynamoDB wertet Bedingungen von links nach rechts entsprechend der folgenden Prioritätsregeln aus:

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • Klammern

  • NOT

  • AND

  • OR