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.