使用全局二级索引筛选dynamoDB查询

我正在使用全局二级索引查询我的表,并希望能够过滤基于其他属性的结果(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); } }); 

任何其他的想法,我可以如何devise一个TABLE来实现:

 Hash Key: propertyID (unique) Range Key: createdAt (unique Global Secondary Indexes: City Global Secondary Indexes: State 

我希望能够通过索引查询,然后通过其他属性(卧室,浴室等)进行过滤。

无论您需要查询哪个属性,都需要进行GSI – 您可以添加多达5个。 你还需要注意它支持的查询types(只有这些:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN)

如果您的需要超过这些查询,迪纳摩不能帮助 – 可能需要切换到RDS。 如果可以将它们制定为文档,那么可以考虑Cloudsearch。