StructuredQuery

Uma consulta do Firestore.

Representação 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 dos campos a serem retornados.

Isso atua como uma DocumentMask sobre os documentos retornados de uma consulta. Quando não definido, assume que o chamador deseja que todos os campos sejam retornados.

from[]

object ( CollectionSelector )

As coleções a serem consultadas.

where

object ( Filter )

O filtro a ser aplicado.

orderBy[]

object ( Order )

A ordem a ser aplicada aos resultados da consulta.

O Firestore permite que os chamadores forneçam um pedido completo, um pedido parcial ou nenhum pedido. Em todos os casos, o Firestore garante um pedido estável através das seguintes regras:

  • O orderBy é necessário para fazer referência a todos os campos usados ​​com um filtro de desigualdade.
  • Todos os campos que precisam estar em orderBy , mas que ainda não estão presentes, são anexados na ordem lexicográfica do nome do campo.
  • Se um pedido em __name__ não for especificado, ele será anexado por padrão.

Os campos são anexados com a mesma direção de classificação da última ordem especificada ou 'CRESCENTE' se nenhuma ordem foi especificada. Por exemplo:

  • ORDER BY a torna-se ORDER BY a ASC, __name__ ASC
  • ORDER BY a DESC torna-se ORDER BY a DESC, __name__ DESC
  • WHERE a > 1 torna-se WHERE a > 1 ORDER BY a ASC, __name__ ASC
  • WHERE __name__ > ... AND a > 1 torna-se WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
startAt

object ( Cursor )

Um prefixo potencial de uma posição no conjunto de resultados para iniciar a consulta.

A ordem do conjunto de resultados é baseada na cláusula ORDER BY da consulta original.

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

Os resultados desta consulta são ordenados por (b ASC, __name__ ASC) .

Os cursores podem fazer referência à ordem completa ou a um prefixo do local, embora não possam fazer referência a mais campos do que os que estão no ORDER BY fornecido.

Continuando com o exemplo acima, anexar os seguintes cursores iniciais terá impactos variados:

  • START BEFORE (2, /k/123) : inicia a consulta logo antes a = 1 AND b > 2 AND __name__ > /k/123 .
  • START AFTER (10) : inicia a consulta logo após a = 1 AND b > 10 .

Ao contrário OFFSET , que requer a varredura dos primeiros N resultados para pular, um cursor inicial permite que a consulta comece em uma posição lógica. Esta posição não é necessária para corresponder a um resultado real; ela avançará a partir desta posição para encontrar o próximo documento.

Requer:

  • O número de valores não pode ser maior que o número de campos especificado na cláusula ORDER BY .
endAt

object ( Cursor )

Um prefixo potencial de uma posição no conjunto de resultados para encerrar a consulta.

Isso é semelhante a START_AT , mas controla a posição final em vez da posição inicial.

Requer:

  • O número de valores não pode ser maior que o número de campos especificado na cláusula ORDER BY .
offset

integer

O número de documentos a serem ignorados antes de retornar o primeiro resultado.

Isso se aplica após as restrições especificadas por WHERE , START AT e END AT mas antes da cláusula LIMIT .

Requer:

  • O valor deve ser maior ou igual a zero, se especificado.
limit

integer

O número máximo de resultados a serem retornados.

Aplica-se após todas as outras restrições.

Requer:

  • O valor deve ser maior ou igual a zero, se especificado.

Projeção

A projeção dos campos do documento a serem retornados.

Representação JSON
{
  "fields": [
    {
      object (FieldReference)
    }
  ]
}
Campos
fields[]

object ( FieldReference )

Os campos a serem retornados.

Se estiver vazio, todos os campos serão retornados. Para retornar apenas o nome do documento, use ['__name__'] .

Seletor de coleção

Uma seleção de uma coleção, como messages as m1 .

Representação JSON
{
  "collectionId": string,
  "allDescendants": boolean
}
Campos
collectionId

string

O ID da coleção. Quando definido, seleciona apenas coleções com este ID.

allDescendants

boolean

Quando falso, seleciona apenas coleções que são filhos imediatos do parent especificado no RunQueryRequest que o contém. Quando verdadeiro, seleciona todas as coleções descendentes.

Filtro

Um filtro.

Representação 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ão filter_type . O tipo de filtro. filter_type pode ser apenas um dos seguintes:
compositeFilter

object ( CompositeFilter )

Um filtro composto.

fieldFilter

object ( FieldFilter )

Um filtro em um campo de documento.

unaryFilter

object ( UnaryFilter )

Um filtro que aceita exatamente um argumento.

Filtro Composto

Um filtro que mescla vários outros filtros usando o operador fornecido.

Representação JSON
{
  "op": enum (Operator),
  "filters": [
    {
      object (Filter)
    }
  ]
}
Campos
op

enum ( Operator )

O operador para combinar vários filtros.

filters[]

object ( Filter )

A lista de filtros a serem combinados.

Requer:

  • Pelo menos um filtro está presente.

Operador

Um operador de filtro composto.

Enums
OPERATOR_UNSPECIFIED Não especificado. Este valor não deve ser usado.
AND Os documentos são necessários para satisfazer todos os filtros combinados.
OR Os documentos são obrigados a satisfazer pelo menos um dos filtros combinados.

Filtro de campo

Um filtro em um campo específico.

Representação JSON
{
  "field": {
    object (FieldReference)
  },
  "op": enum (Operator),
  "value": {
    object (Value)
  }
}
Campos
field

object ( FieldReference )

O campo pelo qual filtrar.

op

enum ( Operator )

O operador pelo qual filtrar.

value

object ( Value )

O valor com o qual comparar.

Operador

Um operador de filtro de campo.

Enums
OPERATOR_UNSPECIFIED Não especificado. Este valor não deve ser usado.
LESS_THAN

O field fornecido é menor que o value fornecido.

Requer:

  • Esse field vem primeiro em orderBy .
LESS_THAN_OR_EQUAL

O field fornecido é menor ou igual ao value fornecido.

Requer:

  • Esse field vem primeiro em orderBy .
GREATER_THAN

O field fornecido é maior que o value fornecido.

Requer:

  • Esse field vem primeiro em orderBy .
GREATER_THAN_OR_EQUAL

O field fornecido é maior ou igual ao value fornecido.

Requer:

  • Esse field vem primeiro em orderBy .
EQUAL O field fornecido é igual ao value fornecido.
NOT_EQUAL

O field fornecido não é igual ao value fornecido.

Requer:

  • Nenhum outro NOT_EQUAL , NOT_IN , IS_NOT_NULL ou IS_NOT_NAN .
  • Esse field vem primeiro no orderBy .
ARRAY_CONTAINS O field fornecido é uma matriz que contém o value fornecido.
IN

O field fornecido é igual a pelo menos um valor na matriz fornecida.

Requer:

  • Esse value é um ArrayValue não vazio, sujeito a limites de disjunção.
  • Nenhum filtro NOT_IN na mesma consulta.
ARRAY_CONTAINS_ANY

O field fornecido é uma matriz que contém qualquer um dos valores da matriz fornecida.

Requer:

  • Esse value é um ArrayValue não vazio, sujeito a limites de disjunção.
  • Nenhum outro filtro ARRAY_CONTAINS_ANY na mesma disjunção.
  • Nenhum filtro NOT_IN na mesma consulta.
NOT_IN

O valor do field não está na matriz fornecida.

Requer:

  • Esse value é um ArrayValue não vazio com no máximo 10 valores.
  • Nenhum outro OR , IN , ARRAY_CONTAINS_ANY , NOT_IN , NOT_EQUAL , IS_NOT_NULL ou IS_NOT_NAN .
  • Esse field vem primeiro no orderBy .

Filtro Unário

Um filtro com um único operando.

Representação 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 )

O operador unário a ser aplicado.

Campo de união operand_type . O argumento para o filtro. operand_type pode ser apenas um dos seguintes:
field

object ( FieldReference )

O campo ao qual aplicar o operador.

Operador

Um operador unário.

Enums
OPERATOR_UNSPECIFIED Não especificado. Este valor não deve ser usado.
IS_NAN O field fornecido é igual a NaN .
IS_NULL O field fornecido é igual a NULL .
IS_NOT_NAN

O field fornecido não é igual a NaN .

Requer:

  • Nenhum outro NOT_EQUAL , NOT_IN , IS_NOT_NULL ou IS_NOT_NAN .
  • Esse field vem primeiro no orderBy .
IS_NOT_NULL

O field fornecido não é igual a NULL .

Requer:

  • Um único NOT_EQUAL , NOT_IN , IS_NOT_NULL ou IS_NOT_NAN .
  • Esse field vem primeiro no orderBy .

Ordem

Uma ordem em um campo.

Representação JSON
{
  "field": {
    object (FieldReference)
  },
  "direction": enum (Direction)
}
Campos
field

object ( FieldReference )

O campo pelo qual ordenar.

direction

enum ( Direction )

A direção para fazer o pedido. O padrão é ASCENDING .

Direção

Uma direção de classificação.

Enums
DIRECTION_UNSPECIFIED Não especificado.
ASCENDING Ascendente.
DESCENDING Descendente.