web-dev-qa-db-fra.com

Requête Amazon DynamoDB pour les éléments dont la clé contient une sous-chaîne

J'utilise une base de données Amazon DynamoDB et j'ai une liste d'articles avec différentes chaînes comme clé. Je souhaite rechercher des éléments dont la clé contient une sous-chaîne. Par exemple, si certaines des clés sont:

"abcd_aaa"
"abcd_bbb"
"abcd_ccc"

Je veux demander où une clé contient "abcd" et ces 3 éléments seront retournés. Est-ce possible?

20
daniel

Vous ne pouvez interroger le hashKey qu'à l'aide de l'opérateur d'égalité (EQ). Cela étant dit, si ces valeurs ("abcd_aaa", "abcd_bbb", "abcd_ccc") appartiennent à votre hashKey, vous devez les fournir entièrement. D'un autre côté, l'opération Query permet une correspondance partielle sur le rangeKey avec l'option de quelques opérateurs de comparaison supplémentaires:

EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN

Voir Querydocumentation pour plus de détails.

Une possibilité serait d'utiliser un hashKey and rangeKey où la première partie de votre code serait le hashKey et la dernière le rangeKey, exemple:

hashKey : abcd
rangeKey : aaa

En procédant ainsi lorsque vous interrogez par hashKey (abcd), vous recevrez les trois enregistrements triés par rangeKey

18
bsd

Le scan fonctionnera

quelque chose comme ça

var params = {
      TableName: "TABLE",
      ScanFilter: {
           "id": {
                ComparisonOperator: "CONTAINS",
                AttributeValueList: ["abcd"]
           }
      }
 };

 var template = null;
 ddb.scan(params, function (err, data) {
      if (err) {
           console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
      } else {
           //console.log("Query succeeded.");
           data.Items.forEach(function (item) {
                console.log(item);
           });
      }
 });
1
Kevin