我正在使用亚马逊的DynamoDB数据库,有一个列表包含各种字符串作为键。 我想查询键中包含子字符串的项目。例如,如果一些键如下:
"abcd_aaa"
"abcd_bbb"
"abcd_ccc"
我想要查询包含"abcd"的键,这3个项目将被返回。 是否可能实现?
我正在使用亚马逊的DynamoDB数据库,有一个列表包含各种字符串作为键。 我想查询键中包含子字符串的项目。例如,如果一些键如下:
"abcd_aaa"
"abcd_bbb"
"abcd_ccc"
我想要查询包含"abcd"的键,这3个项目将被返回。 是否可能实现?
你只能使用相等操作符(EQ
)查询hashKey
。也就是说,如果这些值("abcd_aaa"、"abcd_bbb"、"abcd_ccc")属于你的hashKey
,那么你必须完整提供它们。另一方面,Query
操作允许在rangeKey
上进行部分匹配,并提供了一些额外的比较操作符选项:
EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
查看 文档 以获取更多详细信息。
一种可能的方式是使用hashKey和rangeKey
,其中您代码的第一部分将是hashKey
,最后一部分是rangeKey
。例如:
hashKey : abcd
rangeKey : aaa
当您按hashKey
(abcd)查询时,通过这样做,您将收到所有三个记录,以rangeKey
排序。
扫描将会起作用
类似这样的东西
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);
});
}
});
Query
操作? - mkobit