AWS Dynamodb:是否可以仅使用排序键进行查询

Raj*_*oni 5 amazon-web-services nosql node.js amazon-dynamodb

在此输入图像描述

嗨dynamodb社区,

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

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

这是我目前的查询.这显然不起作用.因为它抛出错误:ValidationException:查询条件错过了键架构元素:UserID

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

GSI是我唯一的选择.任何帮助赞赏

谢谢你,Ninjasoar

小智 9

二级指数确实想要你想要的.

// 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 } 
    }
}
Run Code Online (Sandbox Code Playgroud)

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


ket*_*iya 5

正如Mark B所说,您需要使用分区键query-您不能单独使用排序键。

因此,唯一的出路是使用GSI email作为分区键。