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 Notes
Tableau Par valeur des éléments

Un tableau ne peut pas contenir un élément correspondant à la valeur d'un autre tableau.

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
Octets Ordre des octets Jusqu'à 1 048 487 octets (1 Mio – 89 octets). Seuls les 1 500 premiers octets sont pris en compte par les requêtes.
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.
Nombre à virgule flottante Numérique Double précision 64 bits, IEEE 754.
Point géographique En fonction de la latitude, puis de la longitude
Entier Numérique 64 bits, signé
Mappage 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: "foo", b: "bar", c: "qux"}.

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. Si deux mappages commencent par 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"}

Vide Aucun
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].
Chaîne de texte Ordre des octets encodés au format UTF-8 Jusqu'à 1 048 487 octets (1 Mio – 89 octets). Seuls les 1 500 premiers octets de la représentation UTF-8 sont pris en compte par les requêtes.

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 nulles
  2. Valeurs booléennes
  3. Entiers et nombres à virgule flottante, triés par ordre numérique
  4. Valeurs de date
  5. Valeurs de chaîne de texte
  6. Valeurs de type octet
  7. Références Firestore
  8. Valeurs de point géographique
  9. Valeurs de tableau
  10. Valeurs de mappage