How to get attribute from a list of partition keys in DynamoDB - is scan my only option?












0















I've got a list of partition keys from one table.



userId["123","456","235"]


I need to get an attribute that they all share. like "username".



What would be the best practice to get them all at once?



Is scan my only option knowing that I know all my partition keys?




Do I know the sort key? yes but only the beginning of it. Therefore I
don't think I could use batchGetItem.











share|improve this question





























    0















    I've got a list of partition keys from one table.



    userId["123","456","235"]


    I need to get an attribute that they all share. like "username".



    What would be the best practice to get them all at once?



    Is scan my only option knowing that I know all my partition keys?




    Do I know the sort key? yes but only the beginning of it. Therefore I
    don't think I could use batchGetItem.











    share|improve this question



























      0












      0








      0








      I've got a list of partition keys from one table.



      userId["123","456","235"]


      I need to get an attribute that they all share. like "username".



      What would be the best practice to get them all at once?



      Is scan my only option knowing that I know all my partition keys?




      Do I know the sort key? yes but only the beginning of it. Therefore I
      don't think I could use batchGetItem.











      share|improve this question
















      I've got a list of partition keys from one table.



      userId["123","456","235"]


      I need to get an attribute that they all share. like "username".



      What would be the best practice to get them all at once?



      Is scan my only option knowing that I know all my partition keys?




      Do I know the sort key? yes but only the beginning of it. Therefore I
      don't think I could use batchGetItem.








      amazon-dynamodb






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 20 '18 at 23:56









      John Rotenstein

      69.5k778123




      69.5k778123










      asked Nov 20 '18 at 23:20









      adimonaadimona

      308




      308
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.



          A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.



          If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression along with the partition key.



          For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str) as the key condition expression.






          share|improve this answer
























          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

            – adimona
            Nov 21 '18 at 0:45






          • 1





            No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

            – Matthew Pope
            Nov 21 '18 at 2:34











          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%2f53403095%2fhow-to-get-attribute-from-a-list-of-partition-keys-in-dynamodb-is-scan-my-only%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









          1














          Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.



          A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.



          If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression along with the partition key.



          For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str) as the key condition expression.






          share|improve this answer
























          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

            – adimona
            Nov 21 '18 at 0:45






          • 1





            No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

            – Matthew Pope
            Nov 21 '18 at 2:34
















          1














          Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.



          A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.



          If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression along with the partition key.



          For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str) as the key condition expression.






          share|improve this answer
























          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

            – adimona
            Nov 21 '18 at 0:45






          • 1





            No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

            – Matthew Pope
            Nov 21 '18 at 2:34














          1












          1








          1







          Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.



          A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.



          If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression along with the partition key.



          For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str) as the key condition expression.






          share|improve this answer













          Scan is only appropriate if you don't know the partition keys. Because you know the partition keys you want to search, you can achieve the desired behavior with multiple Query operations.



          A Query searches all documents with the specified partition key; you can only query one partition key per request, so you'll need multiple queries, but this will still be significantly more efficient than a single Scan operation.



          If you're only looking for documents with a sort key that begins with something, you can include it in your KeyConditionExpression along with the partition key.



          For example, if you wanted to only return documents whose sort key begins with a certain string, you could pass something like userId = :user_id AND begins_with(#SortKey, :str) as the key condition expression.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 21 '18 at 0:30









          Collin DauphineeCollin Dauphinee

          10.6k12947




          10.6k12947













          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

            – adimona
            Nov 21 '18 at 0:45






          • 1





            No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

            – Matthew Pope
            Nov 21 '18 at 2:34



















          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

            – adimona
            Nov 21 '18 at 0:45






          • 1





            No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

            – Matthew Pope
            Nov 21 '18 at 2:34

















          Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

          – adimona
          Nov 21 '18 at 0:45





          Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?

          – adimona
          Nov 21 '18 at 0:45




          1




          1





          No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

          – Matthew Pope
          Nov 21 '18 at 2:34





          No it won’t. A query only consumes RCU for items that match the key condition. Scan consumes RCU for everything in your table (or until you stop scanning).

          – Matthew Pope
          Nov 21 '18 at 2:34


















          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%2f53403095%2fhow-to-get-attribute-from-a-list-of-partition-keys-in-dynamodb-is-scan-my-only%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

          "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

          Alcedinidae

          Origin of the phrase “under your belt”?