javascript – 使用全局二级索引过滤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);
                }

            });

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

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

Global Secondary Indexes: City
Global Secondary Indexes: State

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

最佳答案 无论您需要查询哪个属性都需要制作GSI – 您最多可以添加5个.您还需要注意它支持的查询类型(仅限于:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN)

如果您的需求不仅仅是这些查询,那么Dynamo无法提供帮助 – 可能需要切换到RDS.如果它们可以表述为文档,那么请考虑Cloudsearch.

点赞