Unterstützte MongoDB-Datentypen und ‑Treiber

In den folgenden Tabellen sind die unterstützten MongoDB-Datentypen, ‑Treiber und ‑Drittanbietertools für Cloud Firestore 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
Objekt-ID Ja
Regulärer Ausdruck Ja
String Ja
Symbol Nein
Zeitstempel Ja
Nicht definiert Nein

Dokument-_id

Das Feld _id auf oberster Ebene in einem Dokument muss einen der folgenden Typen haben:

  • Objekt-ID
  • 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

Cloud Firestore 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) von Google Cloud für alle unterstützten Treiberversionen.

Die Java-, Node.js- und Python-Treiber unterstützen die OIDC-Authentifizierung von Google Cloud ab den folgenden Treiberversionen:

  • Java: 4.10
  • Node.js: 6.7
  • Python: 4.7

Drittanbieter-Tools

Cloud Firestore 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

BSON- und Cloud Firestore-Typkompatibilität

In diesem Abschnitt wird die Zuordnung zwischen MongoDB-BSON-Typen und Cloud Firestore-Werten zusammengefasst. Da BSON ein Binärformat ist und die Cloud Firestore API Protokollzwischenspeicher verwendet, werden einige Typen direkt zugeordnet, während andere spezielle Kartendarstellungen erfordern.

Zuordnung – Übersicht

In den folgenden Tabellen wird gezeigt, wie BSON-Datentypen den Cloud Firestore-Protokollzwischenspeicher-Darstellungen entsprechen.

Direkte Zuordnungen

Diese Typen haben in beiden Systemen eine direkte Entsprechung.

BSON-Typ BSON Cloud Firestore Proto Hinweise
Double 1.23 double_value: 1.23
String "hello" string_value: "hello"
Object
{
"a": 1.23
}
map_value {
fields {
key: "a"
value {
double_value: 1.23
}
}
}
Array
[
1.23,
"a"
]
array_value {
values {
double_value: 1.23
}
values {
string_value: "a"
}
}
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 {
seconds: 1779470400
nanos: 0
}
Cloud Firestore-Zeitstempelwerte werden mit einer Genauigkeit von Mikrosekunden gespeichert. Bei der Konvertierung in BSON gehen jedoch alle Werte verloren, die über die Genauigkeit von Millisekunden hinausgehen.

BSON-Typen, die in der Cloud Firestore API als Maps dargestellt werden

Diese BSON-Typen werden in Cloud Firestore map_value mit speziellen Schlüsseln verpackt, um den Typ anzugeben.

BSON-Typ BSON Cloud Firestore Proto Hinweise
32-Bit-Ganzzahl 123
map_value {
fields {
key: "__int__"
value {
integer_value: 123
}
}
}
Binär (Untertyp ungleich null) BinData(1, 'AQIDBA==')
map_value {
fields {
key: "__binary__"
value {
bytes_value: "<subtype + data>"
}
}
}
Untertyp-Byte, das den Daten vorangestellt wird.
ObjectId ObjectId('67eea9446dc71ec469e9496a')
map_value {
fields {
key: "__oid__"
value {
string_value:
"67eea9446dc71ec469e9496a"
}
}
}
Hexadezimalstring in Kleinbuchstaben.
Zeitstempel (intern) Timestamp(123, 1)
map_value {
fields {
key: "__request_timestamp__"
value {
map_value {
fields {
key: "seconds"
value {
integer_value: 123
}
}
fields {
key: "increment"
value {
integer_value: 1
}
}
}
}
}
}
Interner MongoDB-Zeitstempel.
Regulärer Ausdruck RegExp('.*', 'im')
map_value {
fields {
key: "__regex__"
value {
map_value {
fields {
key: "pattern"
value {
string_value: ".*"
}
}
fields {
key: "options"
value {
string_value: "im"
}
}
}
}
}
}
Min Key MinKey()
map_value {
fields {
key: "__min__"
value {
null_value: NULL_VALUE
}
}
}
Max. Schlüssel MaxKey()
map_value {
fields {
key: "__max__"
value {
null_value: NULL_VALUE
}
}
}
Decimal128 Decimal128('4E7')
map_value {
fields {
key: "__decimal128__"
value {
string_value: "4E7"
}
}
}

Cloud Firestore Typen, die nicht nativ in BSON enthalten sind

Diese Cloud Firestore-Typen werden bei der Konvertierung in BSON als speziell strukturierte Maps dargestellt.

Cloud Firestore-Typ BSON Cloud Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
Vektor
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
Dokumentreferenz
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

Feldnamen

Feldnamen aus MongoDB, die mit __.*__ übereinstimmen, werden durch Einfügen von r: maskiert, wenn sie in Cloud Firestore gespeichert werden. Beispiel: Das BSON-Feld __foo__ wird in Cloud Firestore zu __r:foo__.

BSON-Datentypen in Client-SDKs

Wenn Sie Cloud 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

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