Unterstützte Datentypen

Auf dieser Seite werden die Datentypen beschrieben, die Firestore unterstützt.

Datentypen

In der folgenden Tabelle sind die von Firestore unterstützten Datentypen aufgeführt. Außerdem wird darin die Sortierreihenfolge beschrieben, nach der beim Vergleichen von Werten desselben Typs vorgegangen wird:

Datentyp Sortierfolge Notes
Array Nach Elementwerten

Ein Array darf keinen anderen Arraywert als eines seiner Elemente enthalten.

Innerhalb eines Arrays behalten Elemente die ihnen zugewiesene Position bei. Beim Sortieren von zwei oder mehr Arrays geben deren Elementwerte die Reihenfolge vor.

Beim Vergleich von zwei Arrays werden die jeweils ersten Elemente verglichen. Wenn die ersten Elemente gleich sind, werden die zweiten Elemente verglichen und so weiter, bis eine Differenz gefunden wird. Wenn ein Array keine weiteren zu vergleichenden Elemente aufweist, aber bis zu diesem Punkt identisch ist, wird das kürzere vor dem längeren Array angeordnet.

Beispiel: [1, 2, 3] < [1, 2, 3, 1] < [2]. Das Array [2] hat den größten Wert für das erste Element. Das Array [1, 2, 3] enthält Elemente, die den ersten drei Elementen von [1, 2, 3, 1] entsprechen, ist jedoch kürzer.

Boolesch false < true
Byte Bytereihenfolge Bis zu 1.048.487 Byte (1 MiB – 89 Byte) Nur die ersten 1.500 Byte werden bei Abfragen berücksichtigt.
Datum und Uhrzeit Chronologisch Bei der Speicherung in Firestore nur auf Mikrosekunden genau, kleinere Zeiteinheiten werden abgerundet.
Gleitkommazahl Numerisch 64 Bit mit doppelter Genauigkeit, IEEE 754
Geografischer Punkt Nach Längengrad, dann nach Breitengrad Derzeit wird die Verwendung dieses Datentyps aufgrund von Abfragebeschränkungen nicht empfohlen. Im Allgemeinen ist es besser, den Breiten- und Längengrad als separate numerische Felder zu speichern. Wenn Ihre Anwendung einfache geobasierte Geoabfragen benötigt, finden Sie weitere Informationen unter Geoabfragen.
Integer Numerisch 64 Bit, signiert
Map Nach Schlüsseln, danach nach Wert

Stellt ein in ein Dokument eingebettetes Objekt dar. Kann, sofern indexiert, auf untergeordnete Felder abgefragt werden. Wenn Sie diesen Wert von der Indexierung ausschließen, werden auch alle untergeordneten Felder von der Indexierung ausgeschlossen.

Schlüssel werden immer sortiert. Wenn Sie beispielsweise {c: "foo", a: "bar", b: "qux"} schreiben, wird die Map nach Schlüsseln sortiert und als {a: "bar", b: "qux", c: "foo"} gespeichert.

Map-Felder werden nach Schlüsseln sortiert und nach Schlüssel/Wert-Paaren verglichen, wobei zuerst die Schlüssel und dann die Werte verglichen werden. Wenn die ersten Schlüssel/Wert-Paare gleich sind, werden die nächsten verglichen und so weiter. Wenn zwei Maps alle dieselben Schlüssel/Wert-Paare haben, wird die Kartenlänge berücksichtigt. Die folgenden Maps sind beispielsweise in aufsteigender Reihenfolge angeordnet:

{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 Keine
Null Keine
Referenz Nach Pfadelementen (Sammlung, Dokument-ID, Sammlung, Dokument-ID...) Beispiel: projects/[PROJECT_ID]/databases/[DATABASE_ID]/documents/[DOCUMENT_PATH]
Textstring UTF-8-codierte Byte-Reihenfolge Bis zu 1.048.487 Byte (1 MiB – 89 Byte) Nur die ersten 1.500 Byte der UTF-8-Darstellung werden von Abfragen berücksichtigt.
Vektor Nach Dimension und dann nach einzelnen Elementwerten Die maximal unterstützte Einbettungsdimension ist 2.048. Um Vektoren mit größeren Abmessungen zu speichern, verwenden Sie die Dimensionalitätsreduktion.

Werttypsortierung

Wenn eine Abfrage ein Feld mit Werten verschiedener Typen enthält, verwendet Firestore eine deterministische Sortierung anhand der internen Darstellungen. Die folgende Liste zeigt diese Reihenfolge:

  1. Nullwerte
  2. Boolesche Werte
  3. NaN-Werte
  4. Ganzzahl- und Gleitkommawerte, sortiert in numerischer Reihenfolge
  5. Datumswerte
  6. Textstring-Werte
  7. Byte-Werte
  8. Firestore-Verweise
  9. Geografische Punktwerte
  10. Arraywerte
  11. Vektoreinbettungen
  12. Map-Werte