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;








0















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?










share|improve this question
























  • 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

















0















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?










share|improve this question
























  • 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













0












0








0


1






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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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

















  • 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












1 Answer
1






active

oldest

votes


















0














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?






share|improve this answer

























    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
    );



    );













    draft saved

    draft discarded


















    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









    0














    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?






    share|improve this answer





























      0














      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?






      share|improve this answer



























        0












        0








        0







        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?






        share|improve this answer















        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?







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 23 at 5:15

























        answered Mar 22 at 18:51









        Pranav C BalanPranav C Balan

        90.7k1491118




        90.7k1491118





























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

            용인 삼성생명 블루밍스 목차 통계 역대 감독 선수단 응원단 경기장 같이 보기 외부 링크 둘러보기 메뉴samsungblueminx.comeh선수 명단용인 삼성생명 블루밍스용인 삼성생명 블루밍스ehsamsungblueminx.comeheheheh

            155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해