我正在使用Amazon DynamoDB数据库,我有一个包含各种字符串的项目列表。我想查询其键包含子字符串的项目。例如,如果某些键是:
“abcd_aaa”
“abcd_bbb”
“abcd_ccc”
我想查询一个键包含“abcd”的位置,这三个项目将被返回。这可能吗?
答案 0 :(得分:18)
您只能使用相等运算符(hashKey
)查询EQ
。如果这些值(“abcd_aaa”,“abcd_bbb”,“abcd_ccc”)属于你的hashKey
,那么你必须完全提供它们。另一方面,Query
操作允许在rangeKey
上进行部分匹配,并允许选择一些额外的比较运算符:
EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
有关详细信息,请参阅Query
documentation。
一种可能性是使用hashKey and rangeKey
,其中代码的第一部分为hashKey
,最后一部分为rangeKey
,例如:
hashKey : abcd
rangeKey : aaa
通过hashKey
(abcd)查询时,您将收到按rangeKey
答案 1 :(得分: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);
});
}
});