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











up vote
0
down vote

favorite












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




























    up vote
    0
    down vote

    favorite












    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


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      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 at 23:56









      John Rotenstein

      64.8k770113




      64.8k770113










      asked Nov 20 at 23:20









      adimona

      206




      206
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote













          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 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
            2 days ago











          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',
          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








          up vote
          1
          down vote













          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 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
            2 days ago















          up vote
          1
          down vote













          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 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
            2 days ago













          up vote
          1
          down vote










          up vote
          1
          down vote









          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 at 0:30









          Collin Dauphinee

          10.5k12947




          10.5k12947












          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
            – adimona
            Nov 21 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
            2 days ago


















          • Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
            – adimona
            Nov 21 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
            2 days ago
















          Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
          – adimona
          Nov 21 at 0:45




          Thanks Collin, but wouldn't multiple queries be more expensive to run than just doing one scan?
          – adimona
          Nov 21 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
          2 days ago




          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
          2 days ago


















           

          draft saved


          draft discarded



















































           


          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

          Berounka

          Sphinx de Gizeh

          Different font size/position of beamer's navigation symbols template's content depending on regular/plain...