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

如何使用 Go API 从动态模型表中返回排序键的最大时间戳?

如何使用 Go API 从动态模型表中返回排序键的最大时间戳?

Go
米琪卡哇伊 2022-09-19 17:14:24
我有一个这样的表结构:列   类型气泡标识    字符串气泡上次更新  字符串... ...bubbleId是我的主键,也是我的排序键bubbleLastUpdated省略号(...)表示结构中与此问题无关的其余数据。尽可能使用表达式生成器,应如何生成 QueryInput 对象,以便返回“已更新”的气泡的最大值?我正在我的查询输入对象中使用以下内容:    results, err := d.dynamoClient.Query(&dynamodb.QueryInput{        TableName: aws.String(tableName),        ScanIndexForward: aws.Bool(false),        Limit: aws.Int64(1),    })当然,这会返回一个错误,指出请求中必须有一个参数。我对键表达式生成器有点熟悉,但我不想实际为这些提供条件。不幸的是,经过大量的搜索,我最终来到了这里。我要么在寻找错误的东西,要么错过了一些简单的东西。KeyConditionExpression举个例子是最有帮助的。
查看完整描述

1 回答

?
UYOU

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

您所谓的主键实际上称为分区键。您必须至少指定分区键才能使用 。query


如果您没有分区键,则可以使用 ,但效率低下,应考虑重新设计表或添加 .scanglobal secondary index (gsi)


您可以在查询中使用分区键,如下所示:


    var queryInput = &dynamodb.QueryInput{

        TableName:        aws.String(tableName),

        ScanIndexForward: aws.Bool(false),

        Limit:            aws.Int64(1),

        KeyConditions: map[string]*dynamodb.Condition{

            "bubbleId": {

                ComparisonOperator: aws.String("EQ"),

                AttributeValueList: []*dynamodb.AttributeValue{

                    {

                        S: aws.String("bubbleId"),

                    },

                },

            },

        },

    }


    var resp, err = d.dynamoClient.Query(queryInput)

    if err != nil {

        return nil, err

    }


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

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