猿问

在 Golang 中查询 DynamoDB 的二级索引

我的主键是一个名为“id”的字段

我已在表中的“group_number”字段上添加了二级索引

我通过二级索引查询,如下所示:


// Query the secondary index

queryInput := &dynamodb.QueryInput{

    TableName: aws.String(c.GetDynamoDBTableName()),

    KeyConditions: map[string]*dynamodb.Condition{

        "group_number": {

            ComparisonOperator: aws.String("EQ"),

            AttributeValueList: []*dynamodb.AttributeValue{

                {

                    S: aws.String(c.GroupNumber),

                },

            },

        },

    },

}

然而; 我收到错误“validationException:查询条件缺少关键架构元素:id”


DynamoDB 是否只允许查询主键?我的印象是,您使用“GetItem”作为主键,因为如果您使用主键,则只能返回一条记录。要通过二级索引搜索,请使用“查询”,要通过非索引键搜索,请使用“扫描”。


请让我知道我在这里做错了什么。


鸿蒙传说
浏览 193回答 2
2回答

慕标5832272

IndexName除了TableName之外,在创建QueryInput来查询索引时还需要指定该属性。// The name of an index to query. This index can be any local secondary index// or global secondary index on the table. Note that if you use the IndexName// parameter, you must also provide TableName.IndexName *string `min:"3" type:"string"`

Cats萌萌

var queryInput, err2 = svc.Query(&dynamodb.QueryInput{        TableName: aws.String(tableName),        IndexName: aws.String(index_name),        KeyConditions: map[string]*dynamodb.Condition{            "Phone": {                ComparisonOperator: aws.String("EQ"),                AttributeValueList: []*dynamodb.AttributeValue{                    {                        S: aws.String(phone_no),                    },                },            },        },    })
随时随地看视频慕课网APP

相关分类

Go
我要回答