Ist es möglich, verschachtelte Felder in DynamoDB zu übernehmen?

8

Ich möchte ein Dokument in DynamoDB "hochstufen". Das heißt, ich möchte einen Schlüssel und eine Menge von Feld / Wert-Paaren angeben. Wenn mit diesem Schlüssel kein Dokument vorhanden ist, werde ich nicht mit diesem Schlüssel und den angegebenen Schlüssel / Wert-Paaren erstellt. Wenn ein Dokument mit diesem Schlüssel existiert, möchte ich, dass die angegebenen Felder auf die angegebenen Werte gesetzt werden (wenn diese Felder vorher nicht existierten, sollten sie hinzugefügt werden). Alle anderen nicht angegebenen Felder im vorhandenen Dokument sollten in Ruhe gelassen werden.

Es scheint, dass ich das ziemlich gut mit dem Aufruf UpdateItem erreichen kann, wenn die Feld / Wert-Paare, die ich einstelle, alle Felder der obersten Ebene sind. Wenn ich geschachtelte Strukturen habe, arbeitet UpdateItem , um die verschachtelten Felder zu setzen, solange die Struktur existiert. Mit anderen Worten, wenn mein vorhandenes Dokument "foo": {} hat, kann ich "foo.bar": 42 erfolgreich setzen.

Ich kann jedoch "foo.bar": 42 nicht einstellen, wenn kein foo -Objekt bereits existiert (wie in dem Fall, in dem es überhaupt kein Dokument mit dem angegebenen Feld gibt und mein 'upsert' ist) verhält sich wie ein 'Einfügen'.

Ich fand eine Diskussion zu den AWS-Foren von vor einigen Jahren, was zu implizieren scheint das, was ich tun möchte, kann nicht getan werden, aber ich hoffe, dass sich das kürzlich geändert hat, oder vielleicht jemand weiß, wie es geht?

    
pkaeding 01.03.2016, 19:04
quelle

2 Antworten

1

Das ("foo.bar": 42) kann mit der folgenden Abfrage erreicht werden:

%Vor%

Hoffe das hilft:)

    
manojpt 17.10.2017 11:41
quelle
0
  

UpdateItem verhält sich wie eine "upsert" -Operation: Das Element wird aktualisiert, wenn es in der Tabelle vorhanden ist. Ist dies nicht der Fall, wird ein neues Element hinzugefügt (eingefügt).    Ссылка

    
Neil 24.04.2016 08:41
quelle

Tags und Links