DynamoDB的全局二级索引允许稀疏索引。这意味着,如果您有一个GSI,但未定义该项目的哈希或范围键,则该项目将不会直接包含在GSI中。这在许多用例中很有用,因为它使您可以直接识别包含某些字段的记录。但是,如果您缺少字段,则此方法将行不通。
要获取所有未设置字段的项目,最好的选择是使用过滤器进行扫描。该操作将非常昂贵,但将是如下所示的简单代码:
var params = {
TableName: "Accounts",
FilterExpression: "attribute_not_exists(email)"
};
dynamodb.scan(params, {
if (err)
console.log(JSON.stringify(err, null, 2));
else
console.log(JSON.stringify(data, null, 2));
});