Amazon DynamoDBデータベースを使用していて、さまざまな文字列をキーとして持つアイテムのリストがあります。キーにサブストリングが含まれているアイテムを照会したい。たとえば、キーの一部が次の場合:
"abcd_aaa"
"abcd_bbb"
"abcd_ccc"
キーに「abcd」が含まれる場所を照会すると、これらの3つの項目が返されます。これは可能ですか?
等価演算子(hashKey
)を使用してのみEQ
をクエリできます。これらの値( "abcd_aaa"、 "abcd_bbb"、 "abcd_ccc")がhashKey
に属している場合は、完全に指定する必要があります。一方、Query
操作では、いくつかの追加の比較演算子のオプションを使用して、rangeKey
の部分一致を許可します。
EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
詳細については、Query
documentation を参照してください。
1つの可能性は、hashKey and rangeKey
コードの最初の部分はhashKey
で、最後はrangeKey
です。例:
hashKey : abcd
rangeKey : aaa
hashKey
(abcd)でクエリするときにこれを行うと、rangeKey
でソートされた3つのレコードすべてを受け取ります。
スキャンは機能します
このようなもの
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);
});
}
});