2016-01-12 2 views
1

У меня есть таблица с несколькими элементами, некоторые из которых не имеют определенного атрибута. Теперь я хочу сканировать таблицу именно для этих элементов.Сканирование DynamoDB для элементов БЕЗ определенного атрибута

Я использую JavaScript SDK от AWS.

Я пробовал множество различных вариантов, которые я в основном взял из документации AWS и некоторых результатов Google.

Лучшее, что я придумал это: (И это возвращает все элементы без учета состояния)

const params = { 
 
\t \t TableName: curTableName, 
 
\t \t IndexName: "THE_number-index", 
 
\t \t ScanFilter: { 
 
\t \t "THE_number": { 
 
\t \t \t ComparisonOperator: "NULL" 
 
\t \t } 
 
    \t } 
 
}; 
 
dynamodb.scan(params, function(err, data) { 
 
    if (err) console.log(err, err.stack); // an error occurred 
 
    else  console.log(data);   // successful response 
 
});

Каковы правильные параметры сканирования () вызов?

ответ

1

Возможно, лучше использовать FilterExpression вместо ScanFilter.

Существует функция, называемая attribute_exists(), которая, как я думаю, является тем, что вы ищете.

Scan request docs

Condition expression docs

Кроме того, проверьте this example - около 3/4 пути вниз страницы: SQL-Like Expressions.

+0

Спасибо, что помогли! – tesseract

+0

Хорошая работа и спасибо за отправку полного ответа. – smcstewart

1

Благодаря @Steven S. ответ, я нашел решение для Params:

const params = { 
 
    \t \t \t TableName: curTableName, 
 
    \t \t \t ProjectionExpression: "Id,THE_number", 
 
    \t \t \t FilterExpression: 'attribute_not_exists(THE_number)' 
 
    \t \t }; 
 

 
dynamodb.scan(params, function(err, data) { 
 
    if (err) console.log(err, err.stack); // an error occurred 
 
    else  console.log(data);   // successful response 
 
});