DynamoDB order in descending based on sort key Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How can I Scan an index in reverse in DynamoDB?Sort a Map<Key, Value> by valuesSort ArrayList of custom Objects by propertyWhy is it faster to process a sorted array than an unsorted array?QuickSort in descending order is not working properly on duplicate entriesDynamoDB ScanFIlter with BETWEEN comparatorDynamoDB: What's the best way to structure and query a sorted list of timestamped logs?How does Dynamodb Sort the query results when there is no range key avaialble?DynamoDB: Query all data and sorted by date descendingAWS DynamoDbMapper FilterExpression pagination in JavaInserting DynamoDB items with Sort Key in descending order
As a beginner, should I get a Squier Strat with a SSS config or a HSS?
What is the font for "b" letter?
Do I really need to have a message in a novel to appeal to readers?
Generate an RGB colour grid
Multiple OR (||) Conditions in If Statement
Why does it sometimes sound good to play a grace note as a lead in to a note in a melody?
Why is Nikon 1.4g better when Nikon 1.8g is sharper?
What was the first language to use conditional keywords?
Why aren't air breathing engines used as small first stages?
Can a new player join a group only when a new campaign starts?
Source for Esri sample data from 911 Hot Spot Analysis
Does the Weapon Master feat grant you a fighting style?
How to write the following sign?
Why does the remaining Rebel fleet at the end of Rogue One seem dramatically larger than the one in A New Hope?
Do any jurisdictions seriously consider reclassifying social media websites as publishers?
When a candle burns, why does the top of wick glow if bottom of flame is hottest?
Denied boarding although I have proper visa and documentation. To whom should I make a complaint?
The code below, is it ill-formed NDR or is it well formed?
Maximum summed subsequences with non-adjacent items
How often does castling occur in grandmaster games?
A term for a woman complaining about things/begging in a cute/childish way
Is grep documentation about ignoring case wrong, since it doesn't ignore case in filenames?
Disembodied hand growing fangs
Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?
DynamoDB order in descending based on sort key
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How can I Scan an index in reverse in DynamoDB?Sort a Map<Key, Value> by valuesSort ArrayList of custom Objects by propertyWhy is it faster to process a sorted array than an unsorted array?QuickSort in descending order is not working properly on duplicate entriesDynamoDB ScanFIlter with BETWEEN comparatorDynamoDB: What's the best way to structure and query a sorted list of timestamped logs?How does Dynamodb Sort the query results when there is no range key avaialble?DynamoDB: Query all data and sorted by date descendingAWS DynamoDbMapper FilterExpression pagination in JavaInserting DynamoDB items with Sort Key in descending order
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
Currently, I'm using Spring boot with DynamoDB and using DynamoDBMapper for all DB operation. Right now it's sorting in ascending order based on sort key(field name id). How can I sort in descending order based on sort key value?
Current code :
@Override
public PageImpl<Order> getCustomerOrders(Pageable pageable)
List<Order> orders = new ArrayList<>();
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<String> exp = new ArrayList<>();
// filters
if (!exp.isEmpty())
scanExpression
.withFilterExpression(String.join(" AND ", exp)).withExpressionAttributeValues(eav);
PaginatedScanList<Order> scan = mapper.scan(Order.class, scanExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
After some googling, I found that I need to set ScanIndexForward to be true but still I'm confused that how can I achieve it with DynamoDBMApper?
Or should I need to use any low-level class like DynamoDB or AmazonDynamoDb?
java spring spring-boot amazon-dynamodb dynamodb-queries
add a comment |
Currently, I'm using Spring boot with DynamoDB and using DynamoDBMapper for all DB operation. Right now it's sorting in ascending order based on sort key(field name id). How can I sort in descending order based on sort key value?
Current code :
@Override
public PageImpl<Order> getCustomerOrders(Pageable pageable)
List<Order> orders = new ArrayList<>();
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<String> exp = new ArrayList<>();
// filters
if (!exp.isEmpty())
scanExpression
.withFilterExpression(String.join(" AND ", exp)).withExpressionAttributeValues(eav);
PaginatedScanList<Order> scan = mapper.scan(Order.class, scanExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
After some googling, I found that I need to set ScanIndexForward to be true but still I'm confused that how can I achieve it with DynamoDBMApper?
Or should I need to use any low-level class like DynamoDB or AmazonDynamoDb?
java spring spring-boot amazon-dynamodb dynamodb-queries
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19
add a comment |
Currently, I'm using Spring boot with DynamoDB and using DynamoDBMapper for all DB operation. Right now it's sorting in ascending order based on sort key(field name id). How can I sort in descending order based on sort key value?
Current code :
@Override
public PageImpl<Order> getCustomerOrders(Pageable pageable)
List<Order> orders = new ArrayList<>();
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<String> exp = new ArrayList<>();
// filters
if (!exp.isEmpty())
scanExpression
.withFilterExpression(String.join(" AND ", exp)).withExpressionAttributeValues(eav);
PaginatedScanList<Order> scan = mapper.scan(Order.class, scanExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
After some googling, I found that I need to set ScanIndexForward to be true but still I'm confused that how can I achieve it with DynamoDBMApper?
Or should I need to use any low-level class like DynamoDB or AmazonDynamoDb?
java spring spring-boot amazon-dynamodb dynamodb-queries
Currently, I'm using Spring boot with DynamoDB and using DynamoDBMapper for all DB operation. Right now it's sorting in ascending order based on sort key(field name id). How can I sort in descending order based on sort key value?
Current code :
@Override
public PageImpl<Order> getCustomerOrders(Pageable pageable)
List<Order> orders = new ArrayList<>();
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
List<String> exp = new ArrayList<>();
// filters
if (!exp.isEmpty())
scanExpression
.withFilterExpression(String.join(" AND ", exp)).withExpressionAttributeValues(eav);
PaginatedScanList<Order> scan = mapper.scan(Order.class, scanExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
After some googling, I found that I need to set ScanIndexForward to be true but still I'm confused that how can I achieve it with DynamoDBMApper?
Or should I need to use any low-level class like DynamoDB or AmazonDynamoDb?
java spring spring-boot amazon-dynamodb dynamodb-queries
java spring spring-boot amazon-dynamodb dynamodb-queries
edited Mar 22 at 13:51
Pranav C Balan
asked Mar 22 at 10:04
Pranav C BalanPranav C Balan
90.7k1491118
90.7k1491118
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19
add a comment |
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19
add a comment |
1 Answer
1
active
oldest
votes
Finally, I found the solution myself, Thanks to @ydrall for the hint. As per his comment, ScanIndexForward can only be used with query option so I just updated with query. I had created DynamoDBQueryExpression object and updated the property using setScanIndexForward method ( false ).
Full java code :
@Override
public PageImpl<Order> getAllProgramOrder(Pageable pageable, OrderFilter filter)
List<Order> orders = new ArrayList<>();
DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>();
queryExpression.setScanIndexForward(false);
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withS(authenticationFacade.getProgramId()));
queryExpression.withKeyConditionExpression("hashKey = :val1 ")
.withExpressionAttributeValues(eav);
PaginatedQueryList<Order> scan = mapper.query(Order.class, queryExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
Ref : How can I Scan an index in reverse in DynamoDB?
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55297191%2fdynamodb-order-in-descending-based-on-sort-key%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Finally, I found the solution myself, Thanks to @ydrall for the hint. As per his comment, ScanIndexForward can only be used with query option so I just updated with query. I had created DynamoDBQueryExpression object and updated the property using setScanIndexForward method ( false ).
Full java code :
@Override
public PageImpl<Order> getAllProgramOrder(Pageable pageable, OrderFilter filter)
List<Order> orders = new ArrayList<>();
DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>();
queryExpression.setScanIndexForward(false);
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withS(authenticationFacade.getProgramId()));
queryExpression.withKeyConditionExpression("hashKey = :val1 ")
.withExpressionAttributeValues(eav);
PaginatedQueryList<Order> scan = mapper.query(Order.class, queryExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
Ref : How can I Scan an index in reverse in DynamoDB?
add a comment |
Finally, I found the solution myself, Thanks to @ydrall for the hint. As per his comment, ScanIndexForward can only be used with query option so I just updated with query. I had created DynamoDBQueryExpression object and updated the property using setScanIndexForward method ( false ).
Full java code :
@Override
public PageImpl<Order> getAllProgramOrder(Pageable pageable, OrderFilter filter)
List<Order> orders = new ArrayList<>();
DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>();
queryExpression.setScanIndexForward(false);
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withS(authenticationFacade.getProgramId()));
queryExpression.withKeyConditionExpression("hashKey = :val1 ")
.withExpressionAttributeValues(eav);
PaginatedQueryList<Order> scan = mapper.query(Order.class, queryExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
Ref : How can I Scan an index in reverse in DynamoDB?
add a comment |
Finally, I found the solution myself, Thanks to @ydrall for the hint. As per his comment, ScanIndexForward can only be used with query option so I just updated with query. I had created DynamoDBQueryExpression object and updated the property using setScanIndexForward method ( false ).
Full java code :
@Override
public PageImpl<Order> getAllProgramOrder(Pageable pageable, OrderFilter filter)
List<Order> orders = new ArrayList<>();
DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>();
queryExpression.setScanIndexForward(false);
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withS(authenticationFacade.getProgramId()));
queryExpression.withKeyConditionExpression("hashKey = :val1 ")
.withExpressionAttributeValues(eav);
PaginatedQueryList<Order> scan = mapper.query(Order.class, queryExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
Ref : How can I Scan an index in reverse in DynamoDB?
Finally, I found the solution myself, Thanks to @ydrall for the hint. As per his comment, ScanIndexForward can only be used with query option so I just updated with query. I had created DynamoDBQueryExpression object and updated the property using setScanIndexForward method ( false ).
Full java code :
@Override
public PageImpl<Order> getAllProgramOrder(Pageable pageable, OrderFilter filter)
List<Order> orders = new ArrayList<>();
DynamoDBQueryExpression<Order> queryExpression = new DynamoDBQueryExpression<Order>();
queryExpression.setScanIndexForward(false);
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withS(authenticationFacade.getProgramId()));
queryExpression.withKeyConditionExpression("hashKey = :val1 ")
.withExpressionAttributeValues(eav);
PaginatedQueryList<Order> scan = mapper.query(Order.class, queryExpression);
int start = (int) pageable.getOffset();
int size = scan.size();
int end = (start + pageable.getPageSize()) > size ? size : (start + pageable.getPageSize());
if (start < size)
for (Order o : scan.subList(start, end))
orders.add(o);
return new PageImpl<Order>(orders, pageable, size);
Ref : How can I Scan an index in reverse in DynamoDB?
edited Mar 23 at 5:15
answered Mar 22 at 18:51
Pranav C BalanPranav C Balan
90.7k1491118
90.7k1491118
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55297191%2fdynamodb-order-in-descending-based-on-sort-key%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
AFAIK, ScanIndexForward only works with Query not Scan. Something similar here: stackoverflow.com/questions/26250095/….
– ydrall
Mar 22 at 16:09
@ydrall : thanks for your quick response .... Will have a look into it.... 👍
– Pranav C Balan
Mar 22 at 16:19