Freaktiful

Minitip: dynamoDB – ¿cómo se consulta por campo == null?

DynamoDB es una base de datos no relacional. Alguien del trabajo se refirió a ella como “un json”, y al menos a nivel de representación no me parece mal símil.

Una cosa que tiene DynamoDB, y creo que las bases de datos no relacionales en general, es que solo escriben una entrada de índice si la clave de ordenación del índice (el campo en cuestión) se encuentra presente en los elementos. Si el campo no aparece en todos los elementos de la tabla, se considera disperso (sparse index en inglés).

Esta característica viene muy bien para cuando se buscan elementos que tengan ese campo, pero ¿qué pasa si lo que quieres es buscar los elementos que no lo tengan?

Para esto se tiene que hacer una consulta scan, que es bastante costosa pero que al menos tiene un código bastante simple:


var params = {
TableName: "TableName",
FilterExpression: "attribute_not_exists(field)"
};

dynamodb.scan(params, {
if (err)
console.log(JSON.stringify(err, null, 2));
else
console.log(JSON.stringify(data, null, 2));
});

Siendo “TableName” el nombre de la tabla, y “field” el campo en cuestión.

************************************************************

Espero que esta entrada pueda ser de utilidad, y si no, como siempre, aquí tenéis un gato para compensar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.