Pourquoi DynamoDB analyse avec fin et FilterExpression pas retourner les articles qui correspondent aux exigences du filtre?

J'ai besoin de faire une analyse avec fin et une condition sur DynamoDB.

La docs dit:

Dans une réponse, DynamoDB retourne tous les résultats dans le champ d'application de la valeur Limite. Par exemple, si vous exécutez une Requête ou d'une requête d'Analyse avec une valeur Limite de 6 et sans une expression de filtre, DynamoDB renvoie les six premiers éléments dans la table qui correspond à la clé spécifiée conditions de la demande (ou seulement les six premiers éléments dans le cas d'une Analyse avec pas de filtre). Si vous aussi vous fournir un FilterExpression valeur, DynamoDB va retourner les articles dans les six premiers que de correspondre aux exigences du filtre (le nombre de résultats retourné devra être inférieur ou égal à 6).

Le code (NODEJS):

var params = {
    ExpressionAttributeNames: {"#user": "User"},
    ExpressionAttributeValues: {":user": parseInt(user.id)},
    FilterExpression: "#user = :user and attribute_not_exists(Removed)",
    Limit: 2,
    TableName: "XXXX"
};

DynamoDB.scan(params, function(err, data) {
    if (err) {
        dataToSend.message = "Unable to query. Error: " + err.message;
    } else if (data.Items.length == 0) {
        dataToSend.message = "No results were found.";
    } else {
        dataToSend.data = data.Items;
        console.log(dataToSend);
    }
});

Tableau XXXX définitions:

  • Partition primaire clés: Utilisateur (Nombre)
  • Primaire de la clé de tri: Identificateur (String)
  • INDEX:
    • Nom De L'Index: RemovedIndex
    • Type: GSI
    • Clé de Partition: Retiré (Nombre)
    • De la clé de tri: -
    • Attributs: TOUS les

Dans le code ci-dessus, si je retire la Limit paramètre, DynamoDB sera de retour les éléments qui correspondent aux critères de filtre. Ainsi, les conditions sont ok. Mais quand je scan avec Limit paramètre, le résultat est vide.

Le XXXX table, a 5 éléments. Seuls les 2 premiers ont le Removed attribut. Quand je scanne sans Limit paramètre, DynamoDB retourne les 3 éléments sans Removed attribut.

Ce que je fais mal?