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

时间:2014-02-10 14:28:20

标签: 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);
                }

            });

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

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

Global Secondary Indexes: City
Global Secondary Indexes: State

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

1 个答案:

答案 0 :(得分:2)

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

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