Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

return item with maximum sort-key in dynamodb

I'm using a python script to access a dynamodb database in AWS.

I have a table with a hash key and sort key.

For a given hash key, I want to find the item with the largest sort key that is less than a certain value. How can I do that?

Alternatively, is there a way to find the previous item from a given key?

I am not trying to find the item with the largest attribute value (an expensive task in dynamodb), I want the largest key value.

like image 921
falsePockets Avatar asked Feb 28 '17 23:02

falsePockets


1 Answers

I found the answer,

import boto3
import botocore
from boto3.dynamodb.conditions import Key, Attr


dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(table_name)

response = table.query(
              Limit = 1,
              ScanIndexForward = False,
              KeyConditionExpression=Key('device').eq(device) & Key('epoch').lte(threshold)
           )

Where:

  • 'device' is my hash key
  • 'epoch' is my sort key
  • threshold is the value I want to search below
like image 113
falsePockets Avatar answered Sep 29 '22 23:09

falsePockets