我正在使用全局二级索引来查询我的表,并希望能够根据其他属性过滤结果(SQL等效项将是一个WHERE子句))。扫描允许我这样做,但可以使用查询吗?我可以采取哪些其他方法?
var params = {
"IndexName": "City-index",
"KeyConditions": {
"City": {
"AttributeValueList": [{
"S": city
}],
"ComparisonOperator": "EQ"
}
},
"Limit": "100",
"TableName": "properties"
}
dynamoDB.query(params, function(err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
关于如何设计TABLE来实现的任何其他想法:
Hash Key: propertyID (unique)
Range Key: createdAt (unique
Global Secondary Indexes: City
Global Secondary Indexes: State
我希望能够通过索引进行查询,然后按其他属性(卧室,浴室等)进行过滤。
答案 0 :(得分:2)
无论您需要查询哪个属性都需要制作GSI - 您最多可以添加其中的5个。你还需要注意它支持的查询类型(仅限:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN)
如果您的需求不仅仅是这些查询,那么Dynamo无法提供帮助 - 可能需要切换到RDS。如果它们可以表述为文档,那么请考虑Cloudsearch。