Почему сканирование DynamoDB с помощью Limit и FilterExpression не возвращает элементы, соответствующие требованиям фильтра?

Мне нужно сделать сканирование с лимитом и условием на DynamoDB.

документы говорит:

В ответ DynamoDB возвращает все результаты сопоставления в пределах значения Limit. Например, если вы отправляете запрос или запрос сканирования со значением Limit 6 и без выражения фильтра, DynamoDB возвращает первые шесть элементов в таблице, которые соответствуют указанным ключевым условиям в запросе (или только первые шесть элементов в случай сканирования без фильтра). Если вы также предоставите значение FilterExpression, DynamoDB вернет элементы в первых шести, которые также соответствуют требованиям фильтра (количество возвращаемых результатов будет меньше или равно 6).


Код (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);
    }
});



Таблица XXXX определений:

Основной ключ раздела: пользователь (номер)Основной ключ сортировки: идентификатор (строка)ИНДЕКС:Имя индекса: RemovedIndexТип: GSIКлюч раздела: удален (номер)Ключ сортировки: -Атрибуты: ВСЕ


В приведенном выше коде, если я удаляюLimit Параметр DynamoDB вернет элементы, которые соответствуют требованиям фильтра. Итак, условия в порядке. Но когда я сканирую сLimit параметр, результат пуст.

Таблица XXXX, имеет 5 предметов. Только 2 первых имеютRemoved приписывать. Когда я сканирую безLimit параметр, DynamoDB возвращает 3 элемента безRemoved приписывать.

Что я делаю не так?

Ответы на вопрос(4)

Ваш ответ на вопрос