Почему сканирование 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 определений:
В приведенном выше коде, если я удаляюLimit
Параметр DynamoDB вернет элементы, которые соответствуют требованиям фильтра. Итак, условия в порядке. Но когда я сканирую сLimit
параметр, результат пуст.
Таблица XXXX, имеет 5 предметов. Только 2 первых имеютRemoved
приписывать. Когда я сканирую безLimit
параметр, DynamoDB возвращает 3 элемента безRemoved
приписывать.
Что я делаю не так?