StructuredQuery

Una consulta de Firestore.

Representación JSON
{
  "select": {
    object (Projection)
  },
  "from": [
    {
      object (CollectionSelector)
    }
  ],
  "where": {
    object (Filter)
  },
  "orderBy": [
    {
      object (Order)
    }
  ],
  "startAt": {
    object (Cursor)
  },
  "endAt": {
    object (Cursor)
  },
  "offset": integer,
  "limit": integer
}
Campos
select

object ( Projection )

Subconjunto opcional de los campos a devolver.

Esto actúa como DocumentMask sobre los documentos devueltos por una consulta. Cuando no está configurado, se supone que la persona que llama quiere que se le devuelvan todos los campos.

from[]

object ( CollectionSelector )

Las colecciones a consultar.

where

object ( Filter )

El filtro a aplicar.

orderBy[]

object ( Order )

El orden que se aplicará a los resultados de la consulta.

Firestore permite a las personas que llaman proporcionar un pedido completo, un pedido parcial o ningún pedido en absoluto. En todos los casos, Firestore garantiza un pedido estable a través de las siguientes reglas:

  • orderBy es necesario para hacer referencia a todos los campos utilizados con un filtro de desigualdad.
  • Todos los campos que deben estar en orderBy pero que aún no están presentes se agregan en el orden lexicográfico del nombre del campo.
  • Si no se especifica una orden en __name__ , se agrega de forma predeterminada.

Los campos se añaden con la misma dirección de clasificación que el último orden especificado, o 'ASCENDENTE' si no se especificó ningún orden. Por ejemplo:

  • ORDER BY a se convierte en ORDER BY a ASC, __name__ ASC
  • ORDER BY a DESC se convierte en ORDER BY a DESC, __name__ DESC
  • WHERE a > 1 se convierte en WHERE a > 1 ORDER BY a ASC, __name__ ASC
  • WHERE __name__ > ... AND a > 1 se convierte en WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
startAt

object ( Cursor )

Un prefijo potencial de una posición en el conjunto de resultados para iniciar la consulta.

El orden del conjunto de resultados se basa en la cláusula ORDER BY de la consulta original.

SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;

Los resultados de esta consulta están ordenados por (b ASC, __name__ ASC) .

Los cursores pueden hacer referencia al orden completo o a un prefijo de la ubicación, aunque no pueden hacer referencia a más campos que los que se encuentran en el ORDER BY proporcionado.

Siguiendo con el ejemplo anterior, adjuntar los siguientes cursores de inicio tendrá un impacto variable:

  • START BEFORE (2, /k/123) : inicie la consulta justo antes a = 1 AND b > 2 AND __name__ > /k/123 .
  • START AFTER (10) : inicie la consulta justo después a = 1 AND b > 10 .

A diferencia de OFFSET , que requiere escanear los primeros N resultados para omitir, un cursor de inicio permite que la consulta comience en una posición lógica. No es necesario que esta posición coincida con un resultado real; escaneará hacia adelante desde esta posición para encontrar el siguiente documento.

Requiere:

  • El número de valores no puede ser mayor que el número de campos especificados en la cláusula ORDER BY .
endAt

object ( Cursor )

Un prefijo potencial de una posición en el conjunto de resultados en la que finalizar la consulta.

Esto es similar a START_AT pero controla la posición final en lugar de la posición inicial.

Requiere:

  • El número de valores no puede ser mayor que el número de campos especificados en la cláusula ORDER BY .
offset

integer

La cantidad de documentos que se deben omitir antes de devolver el primer resultado.

Esto se aplica después de las restricciones especificadas por WHERE , START AT y END AT pero antes de la cláusula LIMIT .

Requiere:

  • El valor debe ser mayor o igual a cero si se especifica.
limit

integer

El número máximo de resultados que se devolverán.

Se aplica después de todas las demás restricciones.

Requiere:

  • El valor debe ser mayor o igual a cero si se especifica.

Proyección

La proyección de los campos del documento a regresar.

Representación JSON
{
  "fields": [
    {
      object (FieldReference)
    }
  ]
}
Campos
fields[]

object ( FieldReference )

Los campos a devolver.

Si está vacío, se devuelven todos los campos. Para devolver solo el nombre del documento, use ['__name__'] .

Selector de colección

Una selección de una colección, como messages as m1 .

Representación JSON
{
  "collectionId": string,
  "allDescendants": boolean
}
Campos
collectionId

string

El ID de la colección. Cuando se configura, selecciona solo colecciones con este ID.

allDescendants

boolean

Cuando es falso, selecciona solo colecciones que son hijas inmediatas del parent especificado en el RunQueryRequest que lo contiene. Cuando es verdadero, selecciona todas las colecciones descendientes.

Filtrar

Un filtro.

Representación JSON
{

  // Union field filter_type can be only one of the following:
  "compositeFilter": {
    object (CompositeFilter)
  },
  "fieldFilter": {
    object (FieldFilter)
  },
  "unaryFilter": {
    object (UnaryFilter)
  }
  // End of list of possible types for union field filter_type.
}
Campos
Campo de unión filter_type . El tipo de filtro. filter_type puede ser solo uno de los siguientes:
compositeFilter

object ( CompositeFilter )

Un filtro compuesto.

fieldFilter

object ( FieldFilter )

Un filtro en un campo de documento.

unaryFilter

object ( UnaryFilter )

Un filtro que toma exactamente un argumento.

Filtro compuesto

Un filtro que combina varios otros filtros utilizando el operador dado.

Representación JSON
{
  "op": enum (Operator),
  "filters": [
    {
      object (Filter)
    }
  ]
}
Campos
op

enum ( Operator )

El operador para combinar múltiples filtros.

filters[]

object ( Filter )

La lista de filtros para combinar.

Requiere:

  • Al menos un filtro está presente.

Operador

Un operador de filtro compuesto.

Enumeraciones
OPERATOR_UNSPECIFIED Sin especificar. Este valor no debe utilizarse.
AND Se requieren documentos para satisfacer todos los filtros combinados.
OR Se requieren documentos para satisfacer al menos uno de los filtros combinados.

Filtro de campo

Un filtro en un campo específico.

Representación JSON
{
  "field": {
    object (FieldReference)
  },
  "op": enum (Operator),
  "value": {
    object (Value)
  }
}
Campos
field

object ( FieldReference )

El campo por el que filtrar.

op

enum ( Operator )

El operador por el que filtrar.

value

object ( Value )

El valor con el que comparar.

Operador

Un operador de filtro de campo.

Enumeraciones
OPERATOR_UNSPECIFIED Sin especificar. Este valor no debe utilizarse.
LESS_THAN

El field dado es menor que el value dado.

Requiere:

  • Ese field ocupa el primer lugar en orderBy .
LESS_THAN_OR_EQUAL

El field dado es menor o igual que el value dado.

Requiere:

  • Ese field ocupa el primer lugar en orderBy .
GREATER_THAN

El field dado es mayor que el value dado.

Requiere:

  • Ese field ocupa el primer lugar en orderBy .
GREATER_THAN_OR_EQUAL

El field dado es mayor o igual que el value dado.

Requiere:

  • Ese field ocupa el primer lugar en orderBy .
EQUAL El field dado es igual al value dado.
NOT_EQUAL

El field dado no es igual al value dado.

Requiere:

  • Ningún otro NOT_EQUAL , NOT_IN , IS_NOT_NULL o IS_NOT_NAN .
  • Ese field ocupa el primer lugar en orderBy .
ARRAY_CONTAINS El field dado es una matriz que contiene el value dado.
IN

El field dado es igual a al menos un valor en la matriz dada.

Requiere:

  • Ese value es un ArrayValue no vacío, sujeto a límites de disyunción.
  • No hay filtros NOT_IN en la misma consulta.
ARRAY_CONTAINS_ANY

El field dado es una matriz que contiene cualquiera de los valores de la matriz dada.

Requiere:

  • Ese value es un ArrayValue no vacío, sujeto a límites de disyunción.
  • No hay otros filtros ARRAY_CONTAINS_ANY dentro de la misma disyunción.
  • No hay filtros NOT_IN en la misma consulta.
NOT_IN

El valor del field no está en la matriz dada.

Requiere:

  • Ese value es un ArrayValue no vacío con como máximo 10 valores.
  • Ningún otro OR , IN , ARRAY_CONTAINS_ANY , NOT_IN , NOT_EQUAL , IS_NOT_NULL o IS_NOT_NAN .
  • Ese field ocupa el primer lugar en orderBy .

Filtro unario

Un filtro con un solo operando.

Representación JSON
{
  "op": enum (Operator),

  // Union field operand_type can be only one of the following:
  "field": {
    object (FieldReference)
  }
  // End of list of possible types for union field operand_type.
}
Campos
op

enum ( Operator )

El operador unario a aplicar.

Campo de unión operand_type . El argumento del filtro. operand_type puede ser sólo uno de los siguientes:
field

object ( FieldReference )

El campo al que aplicar el operador.

Operador

Un operador unario.

Enumeraciones
OPERATOR_UNSPECIFIED Sin especificar. Este valor no debe utilizarse.
IS_NAN El field dado es igual a NaN .
IS_NULL El field dado es igual a NULL .
IS_NOT_NAN

El field proporcionado no es igual a NaN .

Requiere:

  • Ningún otro NOT_EQUAL , NOT_IN , IS_NOT_NULL o IS_NOT_NAN .
  • Ese field ocupa el primer lugar en orderBy .
IS_NOT_NULL

El field dado no es igual a NULL .

Requiere:

  • Un solo NOT_EQUAL , NOT_IN , IS_NOT_NULL o IS_NOT_NAN .
  • Ese field ocupa el primer lugar en orderBy .

Orden

Una orden en un campo.

Representación JSON
{
  "field": {
    object (FieldReference)
  },
  "direction": enum (Direction)
}
Campos
field

object ( FieldReference )

El campo por el que realizar el pedido.

direction

enum ( Direction )

La dirección para realizar el pedido. El valor predeterminado es ASCENDING .

Dirección

Una especie de dirección.

Enumeraciones
DIRECTION_UNSPECIFIED Sin especificar.
ASCENDING Ascendente.
DESCENDING Descendente.