2015-05-15 11 views
15

Ich versuche, einen Index zu einem Attribut innerhalb eines Map-Objekts in DynamoDB hinzuzufügen, und scheint keinen Weg zu finden, dies zu tun. Ist das etwas, was unterstützt wird oder sind Indizes wirklich nur für skalare Werte erlaubt? Die Dokumentation dazu scheint recht spärlich zu sein. Ich hoffe, dass die Indizierungsfunktion mit MongoDB vergleichbar ist, aber bisher waren die Ansätze, die ich verwendet habe, um das Attribut zu indexieren, das die Punktsyntax verwendet, nicht erfolgreich. Jede Hilfe oder zusätzliche Informationen, die zur Verfügung gestellt werden können, wird geschätzt.DynamoDB Index auf Karte oder Listentyp erstellen

Antwort

16

Indizes können nur auf JSON-Attributen der obersten Ebene erstellt werden. Außerdem müssen Bereichsschlüssel skalare Werte in DynamoDB sein (entweder String, Number, Binary oder Boolean).

Von http://aws.amazon.com/dynamodb/faqs/:

Q: JSON-Daten in DynamoDB jedem anderen abfragt?

Nein. Sie können einen globalen sekundären Index oder einen lokalen sekundären Index auf einem JSON-Element der obersten Ebene erstellen. Angenommen, Sie haben ein JSON-Dokument mit den folgenden Informationen zu einer Person gespeichert: Vorname, Nachname, Postleitzahl und eine Liste aller ihrer Freunde. Vorname, Nachname und Postleitzahl wären JSON-Elemente auf oberster Ebene. Sie können einen Index erstellen, um die Abfrage basierend auf Vorname, Nachname Name oder Postleitzahl zu ermöglichen. Die Liste der Freunde ist kein Top-Level-Element, daher können Sie die Liste der Freunde nicht indizieren. Weitere Informationen finden Sie unter zu Global Secondary Indexing und seinen Abfragefunktionen im Abschnitt Sekundärindizes in diesem FAQ.

F: Welche Datentypen können indiziert werden?

Alle skalaren Datentypen (Number, String, Binary und Boolean) können für das Bereichsschlüsselelement des lokalen sekundären Indexschlüssels verwendet werden. Set, Liste und Kartentypen können nicht indiziert werden.

Verwandte Themen