7
votes

AWS DynamoDB: Est-il possible de faire une requête uniquement en utilisant la touche de tri

 Entrez la description de l'image ici

HI DynamoDB Community,

Donc, la table en question est MLA_USER_AUTH. Comme vous le voyez, il a une clé de cloison et une clé de tri. Je veux pouvoir interroger la base de données à l'aide de User_id et d'email.

Parfois, j'ai besoin de trouver l'utilisateur associé à l'e-mail et parfois à l'ID utilisateur. Les attributs d'email et d'userid sont uniques pour chaque visiteur. Y a-t-il une façon que cela puisse être fait?

Ceci est ma requête actuelle. Cela ne fonctionne évidemment pas. Comme il lance l'erreur: validationException: condition de requête Elément de schéma de clé manquée: userid xxx

est ma seule option. Toute aide appréciée

merci, Ninjasoar


0 commentaires

3 Réponses :


0
votes

0 commentaires

6
votes

As Mark B, vous avez besoin de la clé de partition sur Query - Vous ne pouvez pas le faire en utilisant la clé de tri unique.

Donc, la seule solution pour vous est de créer un GSI avec e-mail comme clé de partition.


1 commentaires

On peut scanner avec ceux-ci. Je n'ai pas vu cela scanna plus d'un enregistrement. Je recommanderais de numériser avec la touche de tri et les performances de la caisse.



13
votes

Un indice secondaire voudrait que vous souhaitiez.

// 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 } 
    }
}


0 commentaires