Запрос Amazon DynamoDB для элементов, чей ключ содержит подстроку

Я использую базу данных Amazon DynamoDB, и у меня есть список элементов с различными строками в качестве ключа. Я хочу запросить элементы, ключ которых содержит подстроку. Например, если некоторые из ключей:

"Abcd_aaa"
"Abcd_bbb"
"Abcd_ccc"

Я хочу запросить, где ключ содержит "abcd", и эти 3 элемента будут возвращены. Это возможно?

Ответ 1

Вы можете запросить только hashKey с помощью оператора равенства (EQ). Если сказано, что эти значения ( "abcd_aaa", "abcd_bbb", "abcd_ccc" ) принадлежат вашему hashKey, тогда вы должны предоставить их полностью. С другой стороны, операция Query позволяет частичное совпадение на rangeKey с возможностью нескольких дополнительных операторов сравнения:

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

Подробнее см. документацию Query .

Одна из возможностей заключается в использовании hashKey and rangeKey, где первая часть вашего кода будет hashKey и последним rangeKey, example:

hashKey : abcd
rangeKey : aaa

Выполняя это при запросе hashKey (abcd), вы получите все три записи, отсортированные по rangeKey

Ответ 2

Сканирование будет работать

что-то вроде этого

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