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

我有一个这样的表结构:


列   类型

气泡标识    字符串

气泡上次更新  字符串

... ...

bubbleId是我的主键,也是我的排序键bubbleLastUpdated


省略号(...)表示结构中与此问题无关的其余数据。


尽可能使用表达式生成器,应如何生成 QueryInput 对象,以便返回“已更新”的气泡的最大值?


我正在我的查询输入对象中使用以下内容:


    results, err := d.dynamoClient.Query(&dynamodb.QueryInput{

        TableName: aws.String(tableName),

        ScanIndexForward: aws.Bool(false),

        Limit: aws.Int64(1),

    })

当然,这会返回一个错误,指出请求中必须有一个参数。我对键表达式生成器有点熟悉,但我不想实际为这些提供条件。不幸的是,经过大量的搜索,我最终来到了这里。我要么在寻找错误的东西,要么错过了一些简单的东西。KeyConditionExpression


举个例子是最有帮助的。


米琪卡哇伊
浏览 65回答 1
1回答

UYOU

您所谓的主键实际上称为分区键。您必须至少指定分区键才能使用 。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    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go