Expresiones de filtro para la operación Query - Amazon DynamoDB

Expresiones de filtro para la operación Query

Si tiene que refinar más los resultados de Query, si lo desea puede indicar una expresión de filtro. Una expresión de filtro determina qué elementos de los resultados de Query se deben devolver al usuario. Todos los demás resultados se descartan.

Una expresión de filtro se aplica después de que la operación Query haya finalizado, pero antes de devolver los resultados. Por consiguiente, Query consume la misma cantidad de capacidad de lectura aunque se especifique una expresión de filtro.

En una operación Query se puede recuperar un máximo de 1 MB de datos. Este límite se aplica antes de evaluar la expresión de filtro.

Una expresión de filtro no puede contener atributos de clave de partición ni de clave de ordenación. Esos atributos se deben especificar en la expresión de condición de clave, no en la expresión de filtro.

La sintaxis de una expresión de filtro es similar a la de una expresión de condición de clave. Las expresiones de filtro pueden utilizar los mismos comparadores, funciones y operadores lógicos que las expresiones de condición de clave. Además, las expresiones de filtro pueden usar los operadores “no es igual” (<>), OR, CONTAINS, IN, BEGINS_WITH, BETWEEN, EXISTS y SIZE. Para obtener más información, consulte Expresiones de condición clave para la operación Query y Sintaxis de las expresiones de filtro y condición.

ejemplo

En el siguiente ejemplo de la AWS CLI, se consulta la tabla Thread para buscar un valor concreto de ForumName (clave de partición) y Subject (clave de ordenación). De los elementos encontrados, solo se devuelven las conversaciones más populares; es decir, solo aquellas que tienen un valor de Views mayor que el número especificado.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :fn and Subject = :sub" \ --filter-expression "#v >= :num" \ --expression-attribute-names '{"#v": "Views"}' \ --expression-attribute-values file://values.json

Los argumentos de --expression-attribute-values se almacenan en el archivo values.json.

{ ":fn":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"}, ":num":{"N":"3"} }

Tenga en cuenta que Views es una palabra reservada en DynamoDB (consulte Palabras reservadas en DynamoDB), por lo que en este ejemplo se utiliza #v como marcador de posición. Para obtener más información, consulte Nombres de atributos de expresión (Alias) en DynamoDB.

nota

Una expresión de filtro elimina los elementos del conjunto de resultados de Query. Si es posible, evite usar Query cuando prevea que va a recuperar gran cantidad de elementos, pero que tendrá que descartar la mayoría de ellos.