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

Javascript 使用全局二级索引筛选dynamoDB查询,javascript,node.js,amazon-dynamodb,Javascript,Node.js,Amazon Dynamodb,我正在使用一个全局二级索引来查询我的表,并希望能够基于其他属性筛选结果(相当于SQL的WHERE子句)。扫描允许我这样做,但是可以通过查询吗?我还可以采取哪些其他方法 var params = { "IndexName": "City-index", "KeyConditions": { "City": { "AttributeValueList

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

            });
关于如何设计表格以实现以下目标的任何其他想法:

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

Global Secondary Indexes: City
Global Secondary Indexes: State

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

您需要查询的任何属性都需要成为GSI,您最多可以添加5个属性。您还需要注意它支持的查询类型(只有这些:EQ | LE | LT | GE | GT |以| BETWEEN开头)


如果您需要的不仅仅是这些查询,Dynamo无法帮助您-可能需要切换到RDS。如果它们可以被设计成文档,那么考虑CyrdSux.

谢谢@索尼。接下来,我可以一次查询超过1个GSI吗?我试过了,但没有成功。我可以使用5,但需要能够在同一个查询中通过多个索引进行查询。是的,我想你可以在一个go中查询多个GSI-哈希键(和/或范围键)和GSI。@乔,如果这已经回答了你的问题,你能标记为正确答案吗?@SonyKadavan Nope,你不能在一个go中查询多个GSI,因为您只能指定一个索引表名。