Saltar al contenido principal
Versión: Siguiente

$filter

Permite consultar los datos de una clase de datos o de un método (p. ej., $filter="firstName!='' AND salary>30000")

Descripción

Este parámetro le permite definir el filtro para su clase de datos o método.

Utilizar un filtro simple

Un filtro se compone de los siguientes elementos:

{attribute} {comparator} {value}

Por ejemplo: $filter="firstName=john" donde firstName es el atributo, = es el comparador y john es el valor.

Utilizar un filtro complejo

Un filtro más complejo se compone de los siguientes elementos, que unen dos consultas:

{attribute} {comparator} {value} {AND/OR/EXCEPT} {attribute} {comparator} {value}

Por ejemplo: $filter="firstName=john AND salary>20000" donde firstName y salary son atributos de la clase de datos Employee.

Utilizar la propiedad params

You can also use 4D's params property which is a collection of values.

{attribute} {comparator} {placeholder} {AND/OR/EXCEPT} {attribute} {comparator} {placeholder}&$params='["{value1}","{value2}"]'

Por ejemplo: $filter="firstName=:1 AND salary>:2"&$params='["john",20000]' donde firstName y salary son los atributos de la clase de datos Employee.

Para más información sobre cómo consultar datos en 4D, consulte la documentación de dataClass.query().

Al insertar comillas (') o comillas dobles ("), debe escaparlas utilizando su código de caracteres:

  • Comillas ('): \u0027
  • Comillas dobles ("): \u0022
  • Por ejemplo, puede escribir lo siguiente al pasar un valor con comillas cuando utilice la propiedad *params
    http://127.0.0.1:8081/rest/Person/?$filter="lastName=:1"&$params='["O\u0027Reilly"]'

    Si pasa el valor directamente, puede escribir lo siguiente: http://127.0.0.1:8081/rest/Person/?$filter="lastName=O'Reilly"

    Atributo

    Si el atributo está en la misma clase de datos, puede pasarlo directamente (p. ej., firstName). Sin embargo, si quiere consultar otra clase de datos, debe incluir el nombre del atributo relacional y el nombre del atributo, es decir, la ruta de acceso (por ejemplo, nombre.empleador). El nombre del atributo distingue entre mayúsculas y minúsculas (firstName no es igual a FirstName).

    También puede consultar los atributos de tipo Object utilizando la anotación de puntos. Por ejemplo, si tiene un atributo cuyo nombre es "objAttributo" con la siguiente estructura:

    {
    prop1: "this is my first property",
    prop2: 9181,
    prop3: ["abc","def","ghi"]
    }

    Puede buscar en el objeto escribiendo lo siguiente:

    GET /rest/Person/?filter="objAttribute.prop2 == 9181"

    Comparador

    El comparador debe ser uno de los siguientes valores:

    ComparadorDescripción
    =igual a
    !=diferente de
    >mayor que
    > =mayor o igual que
    <menor que
    <=menor o igual que
    begincomienza con

    Vector similarity

    If the attribute stores vector objects (see how to configure a 4D field to only store 4D.Vector class objects), you can filter the dataclass using vectors, aka embeddings.

    For more information about vector similarity searches, please refer to Query by vector similarity section.

    Use the params property to provide the filter with the vector comparison parameter, using a syntax like:

    {vectorAttribute} {comparator} {placeholder}&$params=vectorComparison

    The vectorComparison parameter is a collection of the following elements:

    PropiedadTipoDescripción
    [].vectorColección de objetos)Obligatorio. A collection that represents the vector to compare
    [].metricTextOpcional. Vector computation to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors.
  • [].thresholdRealOptional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.

    Only a subset of comparator symbols are supported with vector comparisons. Note that they compare results to the threshold value:

    ComparadorSímbolo(s)Comentario
    Menor que<Lower than the threshold
    Mayor que>Greater than the threshold
    Menor o igual que<=Lower than or equal to the threshold
    Mayor o igual que> =Greater than or equal to the threshold

    Ejemplos

    En el siguiente ejemplo, buscamos a todos los empleados cuyo apellido empieza por "j":

     GET  /rest/Employee?$filter="lastName begin j"

    En este ejemplo, buscamos en la clase de datos Empleado todos los empleados cuyo salario sea superior a 20.000 y que no trabajen para una empresa llamada Acme:

     GET  /rest/Employee?$filter="salary>20000 AND  
    employer.name!=acme"&$orderby="lastName,firstName"

    En este ejemplo, buscamos en la clase de datos Person todas las personas cuya propiedad número en el atributo anotherobj de tipo Object es mayor que 50:

     GET  /rest/Person/?filter="anotherobj.mynum > 50"

    In this example, we do a vector search with basic values:

     GET  /rest/Person/?filter="VectorAtt>=:1"&$params='[{vector:[1,2,3],threshold:1}]'