DEV Community

Abhishek Gupta for AWS

Posted on • Originally published at community.aws

3 1 1

[20 Days of DynamoDB] Day 11 - Using pagination with Query API

Posted: 22/Jan/2024

The Query API returns the result set size to 1 MB. Use ExclusiveStartKey and LastEvaluatedKey elements to paginate over large result sets. You can also reduce page size by limiting the number of items in the result set, with the Limit parameter of the Query operation.

Here is an example:

func paginatedQuery(searchCriteria string, pageSize int32) {

    currPage := 1
    var exclusiveStartKey map[string]types.AttributeValue

    for {
        resp, _ := client.Query(context.Background(), &dynamodb.QueryInput{
            TableName:              aws.String(tableName),
            KeyConditionExpression: aws.String("ForumName = :name"),
            ExpressionAttributeValues: map[string]types.AttributeValue{
                ":name": &types.AttributeValueMemberS{Value: searchCriteria},
            },
            Limit:             aws.Int32(pageSize),
            ExclusiveStartKey: exclusiveStartKey,
        })

        if resp.LastEvaluatedKey == nil {
            return
        }
        currPage++
        exclusiveStartKey = resp.LastEvaluatedKey
    }
}
Enter fullscreen mode Exit fullscreen mode

Recommended reading - Query Pagination

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay