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 Pour le moment, nous ne recommandons pas l'utilisation de ce type de données en raison des limites en termes de requête. Il est généralement préférable de stocker la latitude et la longitude sous forme de champs numériques distincts. Si votre application nécessite des requêtes géographiques simples basées sur la distance, consultez la page Requêtes de données géographiques.
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: "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. Si deux mappages comportent toutes 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"}

NaN Aucun
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.
Vecteur Par dimension, puis par valeur des éléments individuels La dimension d'imbrication maximale acceptée est de 2 048. Pour stocker des vecteurs de dimensions plus élevées, 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 nulles
  2. Valeurs booléennes
  3. Valeurs NaN
  4. Entiers et nombres à virgule flottante, triés par ordre numérique
  5. Valeurs de date
  6. Valeurs de chaîne de texte
  7. Valeurs de type octet
  8. Références Firestore
  9. Valeurs de point géographique
  10. Valeurs de tableau
  11. Représentations vectorielles continues
  12. Valeurs de mappage