node.js - AWS Dynamodb : Is it possible to make a query only using sort key

标签 node.js amazon-web-services amazon-dynamodb nosql

enter image description here

嗨 dynamodb 社区,

所以有问题的表是 MLA_USER_AUTH。如您所见,它具有分区键和排序键。我希望能够使用 user_id 和电子邮件查询数据库。

有时我需要找到与电子邮件关联的用户,有时是用户 ID。 email 和 userid 属性对于每个访问者都是唯一的。有什么办法可以做到吗?

这是我当前的查询。这显然行不通。因为它抛出错误:ValidationException:查询条件缺少关键架构元素:UserID

var params = {
        TableName : 'MLA_USER_AUTH',
        KeyConditionExpression: "Email = :email",
        ExpressionAttributeValues:{
            ":email": { "S" : email } 
        }
    };
    dynamodb.query(params, function(err, data) { 

GSI 是我唯一的选择吗?任何帮助表示赞赏

谢谢, 忍者飞翔

最佳答案

二级索引会满足您的需求。

// definition
{
    TableName: "MLA_USER_AUTH",
    AttributeDefinitions:[
    {
        AttributeName: "Email",
        AttributeType: "S"
    }
    ],
    GlobalSecondaryIndexUpdates: [
    {
        Create: {
            IndexName: "emailIndex",
            KeySchema: [
                {AttributeName: "Email", KeyType: "HASH"}
            ]
        }
    }
    ]
}

// Query
{
    TableName : "MLA_USER_AUTH",
    IndexName: "emailIndex",
    KeyConditionExpression: "Email = :email",
    ExpressionAttributeValues:{
        ":email": { "S" : email } 
    }
}

参见 http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.JsShell.06.html有关创建它们的更多信息。

关于node.js - AWS Dynamodb : Is it possible to make a query only using sort key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617175/

相关文章:

amazon-web-services - 在给定实例 ID 的情况下检索 EC2 实例的 IP 地址

amazon-web-services - Dynamodb 一次批量扫描与多次单次获取

amazon-dynamodb - DynamoDB 中条件写入的日期时间比较

node.js - mongoose findByIdAndUpdate 不修改模型也不返回错误

javascript - 使用 mongoose 在 MongoDB 中批量更新插入

r - 从 R 或 Nodejs 连接到 Analysis Services

node.js - 使用 collectionfs 更新图像

python - Boto3 超时故障排除

amazon-web-services - AWS Cloudformation 从托管区域 ID 获取托管区域名称

javascript - 在javascript中查询dynamodb日期范围