Unterstützte MongoDB-Datentypen und ‑treiber
In den folgenden Tabellen sind die unterstützten MongoDB-Datentypen, ‑Treiber und ‑Drittanbietertools für Firestore mit MongoDB-Kompatibilität aufgeführt.
Datentypen
| BSON-Typ | Unterstützt |
|---|---|
| 32-Bit-Ganzzahl | Ja |
| 64-Bit-Ganzzahl | Ja |
| Array | Ja |
| Binärdaten | Ja |
| Boolesch | Ja |
| Datum | Ja |
| DBPointer | Nein |
| Decimal128 | Ja |
| Doppelt | Ja |
| JavaScript | Nein |
| JavaScript (mit Bereich) | Nein |
| MaxKey | Ja |
| MinKey | Ja |
| Null | Ja |
| Objekt | Ja |
| ObjectId | Ja |
| Regulärer Ausdruck | Ja |
| String | Ja |
| Symbole | Nein |
| Zeitstempel | Ja |
| Nicht definiert | Nein |
Dokument-_id
Das Feld _id auf oberster Ebene in einem Dokument muss einen der folgenden Typen haben:
- ObjectId
- String
- 64-Bit-Ganzzahl
- 32-Bit-Ganzzahl
- Doppelt
- Binär
- Objekt
- Boolesch
Die Gesamtgröße von _id darf 1.500 Byte nicht überschreiten.
Jeder Wert innerhalb einer ID vom Typ „Object“ muss ebenfalls einen unterstützten ID-Typ haben oder ein Array von Werten sein, die jeweils einen unterstützten ID-Typ haben.
Andere BSON-Typen werden nicht unterstützt.
Sprachen und MongoDB-Treiber
Firestore mit MongoDB-Kompatibilität unterstützt die folgenden Treiberversionen:
| Sprache | Treiberversionen |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| Go | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
Unterstützung für OIDC-Authentifizierung
Die Go-, C#- und Ruby-Treiber unterstützen die OpenID Connect-Authentifizierung (OIDC) vonGoogle Cloud für alle unterstützten Treiberversionen.
Die Java-, Node.js- und Python-Treiber unterstützen die OIDC-Authentifizierung vonGoogle Cloud ab den folgenden Treiberversionen:
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
Drittanbieter-Tools
Firestore mit MongoDB-Kompatibilität unterstützt die in diesem Abschnitt beschriebenen Drittanbietertools.
| Tool | Beschreibung | Hinweise |
|---|---|---|
| mongoimport | MongoDB-Datenbanktools | Siehe Bulk-Daten laden |
| mongoexport | MongoDB-Datenbanktools | |
| mongodump | MongoDB-Datenbanktools | |
| mongorestore | MongoDB-Datenbanktools | Siehe Bulk-Daten laden |
| mongosh | MongoDB-Shell | |
| Mongoose | MongoDB-Objektmodellierungstool | |
| MongoDB Compass | GUI-Tool für die Datenexploration |
Kompatibilität von BSON- und Firestore-Typen
In diesem Abschnitt wird die Zuordnung zwischen MongoDB-BSON-Typen und Firestore-Werten zusammengefasst. Da BSON ein Binärformat ist und die Firestore API Protokollzwischenspeicher verwendet, werden einige Typen direkt zugeordnet, während andere spezielle Zuordnungsdarstellungen erfordern.
Zuordnung – Übersicht
In den folgenden Tabellen wird gezeigt, wie BSON-Datentypen den Darstellungen von Firestore-Protokollzwischenspeichern entsprechen.
Direkte Zuordnungen
Diese Typen haben in beiden Systemen eine direkte Entsprechung.
| BSON-Typ | BSON | Firestore-Proto | Hinweise |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| String | "hello" |
string_value: "hello" |
|
| Object | { |
map_value { |
|
| Array | [ |
array_value { |
|
| Binär (Untertyp 0) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| Boolesch | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| 64-Bit-Ganzzahl | Long('1234567890') |
integer_value: 1234567890 |
|
| Datum | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
Firestore-Zeitstempelwerte werden mit einer Genauigkeit von einer Mikrosekunde gespeichert. Bei der Konvertierung in BSON gehen jedoch alle Werte verloren, die über die Genauigkeit von einer Millisekunde hinausgehen. |
BSON-Typen, die in der Firestore API als Maps dargestellt werden
Diese BSON-Typen werden im Firestore-map_value mit speziellen Schlüsseln umschlossen, um den Typ anzugeben.
| BSON-Typ | BSON | Firestore-Proto | Hinweise |
|---|---|---|---|
| 32-Bit-Ganzzahl | 123 |
map_value { |
|
| Binär (Untertyp ungleich null) | BinData(1, 'AQIDBA==') |
map_value { |
Untertyp-Byte, das den Daten vorangestellt wird. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
Hexadezimalstring in Kleinbuchstaben. |
| Zeitstempel (intern) | Timestamp(123, 1) |
map_value { |
Interner MongoDB-Zeitstempel. |
| Regulärer Ausdruck | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Max. Schlüssel | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Firestore-Typen, die nicht nativ in BSON sind
Diese Firestore-Typen werden bei der Konvertierung in BSON als speziell strukturierte Maps dargestellt.
| Firestore-Typ | BSON | Firestore-Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Vektor | { |
map_value { |
| Dokumentreferenz | { |
reference_value: "projects/.../documents/col/doc" |
Feldnamen
Feldnamen aus MongoDB, die mit __.*__ übereinstimmen, werden beim Speichern in Firestore durch Einfügen von r: maskiert. Beispiel: Das BSON-Feld __foo__ wird in Firestore zu __r:foo__.
BSON-Datentypen in Client-SDKs
Wenn Sie Firestore-Client-SDKs verwenden, können Sie spezielle SDK-Klassen verwenden, um BSON-Datentypen wie 128-Bit-Dezimalzahlen, reguläre Ausdrücke und BSON-Zeitstempel darzustellen.
Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore'); // Setting fields with BSON data types const res = await db.collection('foo').doc('bar').set({ regex: new RegexValue('myRegexPattern', 'i'), decimal: new Decimal128Value('0.73e-7'), bsonTimestamp: new BsonTimestamp(1732754912, 500), });
Java
import com.google.cloud.firestore.BsonTimestamp; import com.google.cloud.firestore.Decimal128Value; import com.google.cloud.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Java
Android
import com.google.firebase.firestore.BsonTimestamp; import com.google.firebase.firestore.Decimal128Value; import com.google.firebase.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Go
import ( "context" "cloud.google.com/go/firestore" ) func writeBsonTypes(ctx context.Context, client *firestore.Client) error { _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{ "regex": firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"}, "decimal": firestore.Decimal128Value{Value: "0.73e-7"}, "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500}, }) return err }
Nächste Schritte
- Führen Sie die Kurzanleitung: Datenbank erstellen und eine Verbindung dazu herstellen aus.
- Informationen zu Verhaltensunterschieden
- Eine Übersicht der unterstützten Funktionen je nach MongoDB-Version finden Sie unter