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 de clave para la operación Query en DynamoDB 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 begins_with :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.