StructuredQuery

Requête Firestore.

Les étapes de la requête sont exécutées dans l'ordre suivant: 1. à partir de 2. où 3. sélectionnez 4. orderBy + startAt + endAt 5. décalage 6. limite

Représentation JSON
{
  "select": {
    object (Projection)
  },
  "from": [
    {
      object (CollectionSelector)
    }
  ],
  "where": {
    object (Filter)
  },
  "orderBy": [
    {
      object (Order)
    }
  ],
  "startAt": {
    object (Cursor)
  },
  "endAt": {
    object (Cursor)
  },
  "offset": integer,
  "limit": integer,
  "findNearest": {
    object (FindNearest)
  }
}
Champs
select

object (Projection)

Sous-ensemble facultatif de champs à renvoyer.

Il agit comme un DocumentMask sur les documents renvoyés par une requête. Si cette règle n'est pas définie, cela suppose que l'appelant souhaite que tous les champs soient renvoyés.

from[]

object (CollectionSelector)

Collections à interroger.

where

object (Filter)

Filtre à appliquer.

orderBy[]

object (Order)

Ordre à appliquer aux résultats de la requête.

Firestore permet aux appelants de proposer un tri complet, un ordre partiel ou un ordre nul. Dans tous les cas, Firestore garantit un ordre stable grâce aux règles suivantes:

  • orderBy est obligatoire pour référencer tous les champs utilisés avec un filtre d'inégalité.
  • Tous les champs qui doivent figurer dans orderBy, mais qui ne sont pas déjà présents sont ajoutés selon l'ordre lexicographique du nom du champ.
  • Si une commande sur __name__ n'est pas spécifiée, elle est ajoutée par défaut.

Les champs sont ajoutés avec le même sens de tri que le dernier ordre spécifié ou "ASCENDING" si aucun ordre n'a été spécifié. Exemple :

  • ORDER BY a devient ORDER BY a ASC, __name__ ASC.
  • ORDER BY a DESC devient ORDER BY a DESC, __name__ DESC.
  • WHERE a > 1 devient WHERE a > 1 ORDER BY a ASC, __name__ ASC.
  • WHERE __name__ > ... AND a > 1 devient WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC.
startAt

object (Cursor)

Préfixe potentiel d'une position dans l'ensemble de résultats à laquelle la requête doit commencer.

L'ordre de l'ensemble de résultats est basé sur la clause ORDER BY de la requête d'origine.

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

Les résultats de cette requête sont classés par (b ASC, __name__ ASC).

Les curseurs peuvent faire référence à l'ordre complet ou au préfixe du lieu, bien qu'ils ne puissent pas référencer plus de champs que le ORDER BY fourni.

Pour reprendre l'exemple ci-dessus, l'association des curseurs de début suivants aura un impact variable:

  • START BEFORE (2, /k/123): commencer la requête juste avant a = 1 AND b > 2 AND __name__ > /k/123.
  • START AFTER (10): lancer la requête juste après a = 1 AND b > 10.

Contrairement à OFFSET, qui nécessite d'analyser les N premiers résultats à ignorer, un curseur de début permet à la requête de commencer à une position logique. Cette position n'est pas obligatoire pour correspondre à un résultat réel. La recherche s'effectue à partir de cette position pour trouver le document suivant.

Configuration requise:

  • Le nombre de valeurs ne peut pas être supérieur au nombre de champs spécifié dans la clause ORDER BY.
endAt

object (Cursor)

Préfixe potentiel d'une position dans l'ensemble de résultats à laquelle terminer la requête.

Cette méthode est semblable à START_AT, mais elle contrôle la position de fin plutôt que la position de départ.

Configuration requise:

  • Le nombre de valeurs ne peut pas être supérieur au nombre de champs spécifié dans la clause ORDER BY.
offset

integer

Nombre de documents à ignorer avant de renvoyer le premier résultat.

Cela s'applique après les contraintes spécifiées par WHERE, START AT et END AT, mais avant la clause LIMIT.

Configuration requise:

  • Si elle est spécifiée, la valeur doit être supérieure ou égale à zéro.
limit

integer

Nombre maximal de résultats à renvoyer.

S'applique après toutes les autres contraintes.

Configuration requise:

  • Si elle est spécifiée, la valeur doit être supérieure ou égale à zéro.
findNearest

object (FindNearest)

Facultatif. Recherche des voisins les plus proches possible.

S'applique après tous les autres filtres et tris.

Recherche les représentations vectorielles continues les plus proches du vecteur de requête donné.

Projection

Projection des champs du document à renvoyer.

Représentation JSON
{
  "fields": [
    {
      object (FieldReference)
    }
  ]
}
Champs
fields[]

object (FieldReference)

Champs à renvoyer.

Si ce champ est vide, tous les champs sont renvoyés. Pour ne renvoyer que le nom du document, utilisez ['__name__'].

CollectionSelector

Sélection d'une collection, par exemple messages as m1.

Représentation JSON
{
  "collectionId": string,
  "allDescendants": boolean
}
Champs
collectionId

string

ID de collection. Lorsque cet ID est défini, cette option permet de ne sélectionner que les collections associées à cet ID.

allDescendants

boolean

Si la valeur est "false", sélectionne uniquement les collections qui sont des enfants immédiats de l'élément parent spécifié dans le conteneur RunQueryRequest. Lorsque la valeur est "true", sélectionne toutes les collections descendantes.

Filtre

Un filtre.

Représentation 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.
}
Champs
Champ d'union filter_type. Type de filtre. filter_type ne peut être qu'un des éléments suivants :
compositeFilter

object (CompositeFilter)

Filtre composite :

fieldFilter

object (FieldFilter)

Filtre appliqué à un champ de document.

unaryFilter

object (UnaryFilter)

Un filtre qui accepte exactement un argument.

CompositeFilter

Filtre qui fusionne plusieurs autres filtres à l'aide de l'opérateur donné.

Représentation JSON
{
  "op": enum (Operator),
  "filters": [
    {
      object (Filter)
    }
  ]
}
Champs
op

enum (Operator)

Opérateur permettant de combiner plusieurs filtres.

filters[]

object (Filter)

Liste des filtres à combiner.

Configuration requise:

  • Au moins un filtre est présent.

Opérateur

Opérateur de filtre composite.

Enums
OPERATOR_UNSPECIFIED URL indéterminée. Cette valeur ne doit pas être utilisée.
AND Ils sont obligatoires pour tous les filtres combinés.
OR Les documents doivent correspondre à au moins l'un des filtres combinés.

FieldFilter

Filtre appliqué à un champ spécifique.

Représentation JSON
{
  "field": {
    object (FieldReference)
  },
  "op": enum (Operator),
  "value": {
    object (Value)
  }
}
Champs
field

object (FieldReference)

Champ selon lequel filtrer.

op

enum (Operator)

Opérateur utilisé pour le filtrage.

value

object (Value)

Valeur à laquelle comparer.

Opérateur

Opérateur de filtrage de champ.

Enums
OPERATOR_UNSPECIFIED URL indéterminée. Cette valeur ne doit pas être utilisée.
LESS_THAN

La valeur field donnée est inférieure à la valeur value indiquée.

Configuration requise:

  • Ces field sont arrivés en premier dans orderBy.
LESS_THAN_OR_EQUAL

La valeur field indiquée est inférieure ou égale à la valeur value donnée.

Configuration requise:

  • Ces field sont arrivés en premier dans orderBy.
GREATER_THAN

La valeur field donnée est supérieure à la valeur value donnée.

Configuration requise:

  • Ces field sont arrivés en premier dans orderBy.
GREATER_THAN_OR_EQUAL

La valeur field indiquée est supérieure ou égale à la valeur value donnée.

Configuration requise:

  • Ces field sont arrivés en premier dans orderBy.
EQUAL La valeur field donnée est égale à la valeur value indiquée.
NOT_EQUAL

La valeur field indiquée n'est pas égale à la valeur value indiquée.

Configuration requise:

  • Pas d'autre NOT_EQUAL, NOT_IN, IS_NOT_NULL ou IS_NOT_NAN.
  • Cette field apparaît en premier dans orderBy.
ARRAY_CONTAINS L'élément field indiqué est un tableau contenant l'élément value indiqué.
IN

Le field donné est égal à au moins une valeur dans le tableau donné.

Configuration requise:

  • Ce value est un ArrayValue non vide, soumis aux limites de disjonction.
  • Aucun filtre NOT_IN dans la même requête.
ARRAY_CONTAINS_ANY

La valeur field indiquée est un tableau contenant l'une des valeurs de ce tableau.

Configuration requise:

  • Ce value est un ArrayValue non vide, soumis aux limites de disjonction.
  • Aucun autre filtre ARRAY_CONTAINS_ANY dans la même disjonction.
  • Aucun filtre NOT_IN dans la même requête.
NOT_IN

La valeur de field ne figure pas dans le tableau donné.

Configuration requise:

  • Cet élément value est un ArrayValue non vide comportant au maximum 10 valeurs.
  • Pas d'autre OR, IN, ARRAY_CONTAINS_ANY, NOT_IN, NOT_EQUAL, IS_NOT_NULL ni IS_NOT_NAN.
  • Cette field apparaît en premier dans orderBy.

UnaryFilter

Filtre avec un seul opérande.

Représentation 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.
}
Champs
op

enum (Operator)

Opérateur unaire à appliquer.

Champ d'union operand_type. Argument du filtre. operand_type ne peut être qu'un des éléments suivants :
field

object (FieldReference)

Champ auquel appliquer l'opérateur.

Opérateur

Opérateur unaire.

Enums
OPERATOR_UNSPECIFIED URL indéterminée. Cette valeur ne doit pas être utilisée.
IS_NAN La valeur field donnée est égale à NaN.
IS_NULL La valeur field donnée est égale à NULL.
IS_NOT_NAN

La valeur field indiquée n'est pas égale à NaN.

Configuration requise:

  • Pas d'autre NOT_EQUAL, NOT_IN, IS_NOT_NULL ou IS_NOT_NAN.
  • Cette field apparaît en premier dans orderBy.
IS_NOT_NULL

La valeur field indiquée n'est pas égale à NULL.

Configuration requise:

  • Un seul élément NOT_EQUAL, NOT_IN, IS_NOT_NULL ou IS_NOT_NAN.
  • Cette field apparaît en premier dans orderBy.

Commande

Commande sur un champ.

Représentation JSON
{
  "field": {
    object (FieldReference)
  },
  "direction": enum (Direction)
}
Champs
field

object (FieldReference)

Champ selon lequel trier.

direction

enum (Direction)

Sens de tri. La valeur par défaut est ASCENDING.

Sens

Ordre de tri.

Enums
DIRECTION_UNSPECIFIED URL indéterminée.
ASCENDING Croissant.
DESCENDING Décroissant.

FindNearest

Configuration de la recherche des voisins les plus proches.

Représentation JSON
{
  "vectorField": {
    object (FieldReference)
  },
  "queryVector": {
    object (Value)
  },
  "distanceMeasure": enum (DistanceMeasure),
  "limit": integer
}
Champs
vectorField

object (FieldReference)

Obligatoire. Champ de vecteur indexé à rechercher. Seuls les documents contenant des vecteurs dont la dimensionnalité correspond à queryVector peuvent être renvoyés.

queryVector

object (Value)

Obligatoire. Vecteur de requête que nous recherchons. La valeur doit être un vecteur de 2 048 dimensions au maximum.

distanceMeasure

enum (DistanceMeasure)

Obligatoire. Veuillez indiquer la mesure de distance à utiliser.

limit

integer

Obligatoire. Nombre de voisins les plus proches à renvoyer. La valeur doit être un entier positif inférieur ou égal à 1 000.

DistanceMeasure

Mesure de distance à utiliser pour comparer des vecteurs.

Enums
DISTANCE_MEASURE_UNSPECIFIED Ne doit pas être défini.
EUCLIDEAN Mesure la distance EUCLIDEAN entre les vecteurs. Pour en savoir plus, consultez la page Euclidienne
COSINE Compare des vecteurs en fonction de l'angle qui les sépare, ce qui vous permet de mesurer la similarité qui n'est pas basée sur l'ampleur des vecteurs. Nous vous recommandons d'utiliser DOT_PRODUCT avec des vecteurs normalisés unitaires plutôt que la distance COSINE, qui est mathématiquement équivalente avec de meilleures performances. Pour en savoir plus, consultez la page Similarité cosinus.
DOT_PRODUCT Semblable au cosinus, mais il est affecté par l'amplitude des vecteurs. Pour en savoir plus, consultez la page Dot Product.