2017-05-03 5 views
0

Ich glaube, ich missverstanden DynamoDb. Ich möchte für alle Elemente mit einem untergeordneten Feld des JSON abfragen, die mit einem Bezeichner übereinstimmen, den ich übergebe. Die Struktur ist so etwas wie -Frage DynamoDb für mehrere Artikel

{ 
     "messageId": "ced96cab-767e-509198be5-3d2896a3efeb", 
     "identifier": { 
      "primary": "9927fd47-5d33-4f51-a5bb-f292a0c733b1", 
      "secondary": "none", 
      "tertiary": "cfd96cab-767e-5091-8be5-3d2896a3efeb" 
     }, 
     "attributes": { 
      "MyID": { 
       "Type": "String", 
       "Value": "9927fd47-5c33-4f51-a5bb-f292a0c733b1" 
      } 
     } 
} 

ich für alle Positionen in DynamoDB abfragen möchte, die einen Wert von MyID hat, dass ich vorbei. Alles, was ich gelesen habe, scheint zu sagen, dass Sie den Schlüssel verwenden müssen, in meinem Fall ist dies die MessageId, dies ist für jeden Eintrag eindeutig und nicht ein Wert, den ich verwenden kann.

Hope das macht Sinn.

+0

Sie müssen einen Scan statt einer Abfrage durchführen. Oder fügen Sie möglicherweise einen globalen sekundären Index für "MyID.Value" hinzu und führen Sie dann Ihre Abfrage für diesen Index aus. –

Antwort

0

Die DynamoDB Query-API kann nur verwendet werden, wenn Sie den Wert Partition Schlüssel kennen. Andernfalls müssen Sie möglicherweise die gesamte Tabelle mit FilterExpression scannen, um das Objekt zu finden.

Scanning tables

Sie können GSI nur auf skalaren Attribut erstellen. Im obigen Fall handelt es sich um einen Dokumentdatentyp (d. H. MAP). Also, GSI kann nicht erstellt werden.

+0

Also kann DyanamoDB nicht wie eine traditionelle Datenbank verwendet werden? Ich denke immer noch, dass ich etwas über den Partitionsschlüssel vermisse. Sicherlich muss der Schlüssel einzigartig sein, also wie würde ich mehrere Artikel mit demselben Schlüssel speichern? – P456678

Verwandte Themen