Types de données acceptés

Cette page décrit les types de données compatibles avec Firestore.

Types de données

Le tableau suivant répertorie les types de données compatibles avec Firestore. Il décrit également l'ordre de tri utilisé lors de la comparaison de valeurs du même type :

Type de données Ordre de tri Remarques
Entier 32 bits Numérique

32 bits, signé

Remarque : Uniquement disponible dans l'édition Enterprise.

Entier 64 bits Numérique 64 bits, signé
Tableau Par valeur des éléments

Dans les bases de données de l'édition Standard, un tableau ne peut pas contenir une autre valeur de tableau comme l'un de ses éléments. Dans les bases de données de l'édition Enterprise, un tableau peut contenir une valeur de tableau comme l'un de ses éléments.

Dans un tableau, les éléments conservent la position qui leur est attribuée. Lorsque vous triez deux ou plusieurs tableaux, les tableaux sont classés en fonction des valeurs d'éléments.

Lorsque vous comparez deux tableaux, les premiers éléments de chaque tableau sont comparés. Si les premiers éléments sont égaux, les deuxièmes éléments sont comparés, et ainsi de suite jusqu'à ce qu'une différence soit trouvée. Si un tableau ne contient plus d'éléments à comparer, mais que les éléments comparés jusqu'ici sont égaux, alors le tableau le plus court est placé devant le tableau le plus long.

Par exemple, [1, 2, 3] < [1, 2, 3, 1] < [2]. Le tableau [2] a la première valeur d'élément la plus élevée. Le tableau [1, 2, 3] contient des éléments égaux aux trois premiers éléments de [1, 2, 3, 1], mais sa longueur est plus courte.

Booléen false < true —
Code temporel BSON Chronologique

Valeur d'horodatage de 64 bits comprenant des secondes Unix et un compteur d'incrémentation.

Remarque : Uniquement disponible dans l'édition Enterprise.

Octets Ordre des octets Dans les bases de données de l'édition Standard, la valeur ne doit pas dépasser 1 048 487 octets (1 Mio - 89 octets), et seuls les 1 500 premiers octets sont pris en compte par les requêtes. Dans les bases de données de l'édition Enterprise, il n'y a pas de limite à la taille de la valeur (autre que les limites de taille des documents et des entrées d'index), et la valeur complète est prise en compte par les requêtes.
Octets avec sous-type Ordre des octets (sous-type, puis valeur)

Séquence d'octets binaires avec un indicateur de sous-type BSON.

Remarque : Uniquement disponible dans l'édition Enterprise.

Date et heure Chronologique En cas de stockage dans Firestore, limitez la précision aux microsecondes. Toute précision supplémentaire est arrondie à la baisse.
Decimal128 Numérique

Nombre à virgule flottante décimal de 128 bits pour l'arithmétique de haute précision.

Remarque : Uniquement disponible dans l'édition Enterprise.

Nombre à virgule flottante Numérique Double précision 64 bits selon la norme IEEE 754, y compris NaN et +/-Infinity (normalisés).
Point géographique En fonction de la latitude, puis de la longitude Pour effectuer une recherche basée sur la distance, consultez Recherche géospatiale.
Carte Par clé, puis par valeur

Représente un objet intégré dans un document. Lors de l'indexation, vous pouvez effectuer une requête sur les sous-champs. Si vous excluez cette valeur de l'indexation, tous les sous-champs en sont également exclus.

L'ordre des clés est toujours trié. Par exemple, si vous écrivez {c: "foo", a: "bar", b: "qux"}, le mappage est trié par clé et enregistré sous {a: "bar", b: "qux", c: "foo"}.

Les champs de mappage sont triés par clé et comparés par paires clé/valeur, en commençant par comparer les clés, puis les valeurs. Si les premières paires clé-valeur sont égales, les paires clé-valeur suivantes sont comparées, et ainsi de suite jusqu'à ce qu'une différence soit trouvée. Si deux mappages ont exactement les mêmes paires clé-valeur, la longueur du mappage est prise en compte. Par exemple, les mappages suivants sont classés par ordre croissant :

{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}

Clé maximale Aucun

Valeur spéciale qui est supérieure à toutes les autres valeurs.

Remarque : Uniquement disponible dans l'édition Enterprise.

Clé minimale Aucun

Valeur spéciale inférieure à toutes les autres valeurs (sauf null).

Remarque : Uniquement disponible dans l'édition Enterprise.

Vide Aucun —
ObjectId Ordre des octets

Un identifiant d'objet de 12 octets.

Remarque : Uniquement disponible dans l'édition Enterprise.

Référence Par élément de chemin d'accès (collection, ID de document, collection, ID de document...) Par exemple, projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH].
Expression régulière Par motif, puis par options

Modèle d'expression régulière et options.

Remarque : Uniquement disponible dans l'édition Enterprise.

Chaîne de texte Ordre des octets encodés au format UTF-8 Dans les bases de données de l'édition Standard, la valeur ne doit pas dépasser 1 048 487 octets (1 Mio - 89 octets), et seuls les 1 500 premiers octets sont pris en compte par les requêtes. Dans les bases de données de l'édition Enterprise, il n'y a pas de limite à la taille de la valeur (autre que les limites de taille des documents et des entrées d'index), et la valeur complète est prise en compte par les requêtes.
Vecteur Par dimension, puis par valeur d'élément individuel La dimension d'embedding maximale acceptée est de 2 048. Pour stocker des vecteurs de plus grande dimension, utilisez la réduction de la dimensionnalité.

Ordre des types de valeurs

Lorsqu'une requête implique un champ avec des valeurs de types mixtes, Firestore utilise un ordre déterministe basé sur les représentations internes. La liste suivante indique l'ordre :

  1. Valeurs Null
  2. Valeurs de clé minimales (édition Enterprise uniquement)
  3. Valeurs booléennes
  4. Valeurs entières et à virgule flottante de 64 bits, triées par ordre numérique. Dans les bases de données de l'édition Enterprise, les valeurs d'entier 32 bits et Decimal128 sont également incluses.
  5. Valeurs de date
  6. Valeurs de chaîne de texte
  7. Valeurs d'octets. Dans l'édition Enterprise, les octets avec des valeurs de sous-type sont également inclus.
  8. Références Firestore
  9. Valeurs ObjectId (édition Enterprise uniquement)
  10. Valeurs de point géographique
  11. Expression régulière (édition Enterprise uniquement)
  12. Valeurs de tableau
  13. Embeddings vectoriels
  14. Valeurs de mappage
  15. Nombre maximal de clés-valeurs (édition Enterprise uniquement)

Tri numérique

Firestore trie toutes les valeurs numériques (Integer et Floating point) entrelacées les unes avec les autres. La comparaison à virgule flottante suit l'ordre total de la norme IEEE 754, à l'exception notable que Firestore normalise toutes les valeurs NaN et les considère comme inférieures à -Infinity.