使用全局二级索引过滤 dynamoDB 查询

Joe*_*Dee 6 javascript node.js amazon-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);
                }

            });
Run Code Online (Sandbox Code Playgroud)

关于如何设计一个表来实现的任何其他想法:

Hash Key: propertyID (unique)
Range Key: createdAt (unique

Global Secondary Indexes: City
Global Secondary Indexes: State
Run Code Online (Sandbox Code Playgroud)

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

Son*_*van 3

无论您需要查询哪个属性,都需要将其设为 GSI - 您最多可以添加 5 个属性。您还需要注意它支持的查询类型(仅限这些:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN)

如果您的需求超出了这些查询,那么 Dynamo 无法提供帮助 - 可能需要切换到 RDS。如果它们可以表述为文档,那么请考虑 Cloudsearch。