How do you query for a non-existent (null) attribute in DynamoDB

后端 未结 2 1633
情话喂你
情话喂你 2020-12-16 09:04

I\'m trying to query a DynamoDB table to find all items where the email attribute is not set. A global secondary index called EmailPasswordIndex ex

2条回答
  •  天命终不由人
    2020-12-16 09:57

    DynamoDB's Global Secondary Indexes allow for the indexes to be sparse. That means that if you have a GSI whose hash or range key for an item is not defined then that item will simply not be included in the GSI. This is useful in a number of use cases as it allows you to directly identify records that contain certain fields. However, this approach will not work if you are looking for the lack of a field.

    To get all of the items that have a field not set your best bet may be resorting to a scan with a filter. This operation will be very expensive but it would be straightforward code looking something like the following:

    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));
    });
    

提交回复
热议问题