3

Ich verwende AWS-SDK-Go-Bibliothek für DynamoDb-Konnektivität in Golang.Wie bekomme ich Daten von aws Dynamodb nur mit Partitionsschlüssel?

Meine DynamoDb-Tabelle verfügt über einen Partitionsschlüssel DeviceId (String) und eine Sortierschlüsselzeit (Nummer). Wie kann ich GetItemInput schreiben, um alle Daten mit einer bestimmten DeviceId zu erhalten?

params := &dynamodb.GetItemInput{ 

    Key: map[string]*dynamodb.AttributeValue { 
     "DeviceId": { 
      S: aws.String("item_1"), 
     }, 
    }, 
    ExpressionAttributeNames: map[string]*string{ 
     "DeviceId": "DeviceId", 
    }, 
    TableName: aws.String("DbName"), 
} 

list, err := svc.GetItem(params) 

Antwort

6

Sie haben Abfrage zu verwenden oder Scan Betrieb ist dies ein einfaches Beispiel, aber Sie können mehr auf Amazon Dokumentation here

Insbesondere Abfrageoperation

Ein Abfragevorgang gelesen findet Elemente in einer Tabelle oder einem sekundären Index nur unter Verwendung von Primärschlüsselattributwerten

var queryInput = &dynamodb.QueryInput{ 
    TableName: aws.String(dynamoRestDataTableName), 
    KeyConditions: map[string]*dynamodb.Condition{ 
     "DeviceId": { 
      ComparisonOperator: aws.String("EQ"), 
      AttributeValueList: []*dynamodb.AttributeValue{ 
       { 
        S: aws.String("aDeviceId"), 
       }, 
      }, 
     }, 
    }, 
} 

var resp, err = dynamoSvc.Query(queryInput) 
if err != nil { 
    return nil, err 
} 
+0

Dank Bro. Können Sie mir bitte sagen, wie ich auf Daten vom QueryOutput zugreifen kann? Angenommen, ich möchte auf den letzten Eintrag in der Abfrage zugreifen, wie kann ich das tun? –

+0

Ist dies der einzige Weg, es zu tun? '* resp.Items [* resp.Count - int64 (1)] [" Attribut "]. S' –

+1

Das sieht perfekt aus Alessio, außer es sollte' S: aws.String ("aDeviceId"), ' – anon58192932