Запрос 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);
});
}
});