为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中查询 DynamoDB 的二级索引

在 Golang 中查询 DynamoDB 的二级索引

Go
鸿蒙传说 2023-06-26 15:28:26
我的主键是一个名为“id”的字段我已在表中的“group_number”字段上添加了二级索引我通过二级索引查询,如下所示:// Query the secondary indexqueryInput := &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”作为主键,因为如果您使用主键,则只能返回一条记录。要通过二级索引搜索,请使用“查询”,要通过非索引键搜索,请使用“扫描”。请让我知道我在这里做错了什么。
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

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"`


查看完整回答
反对 回复 2023-06-26
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

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),

                    },

                },

            },

        },

    })


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信