Auf dieser Seite werden die Verhaltensunterschiede zwischen Cloud Firestore und MongoDB beschrieben.
Eine Aufschlüsselung der unterstützten Funktionen je nach MongoDB-Version finden Sie hier:
- Unterstützte Funktionen: 8.0
- Unterstützte Funktionen: 7.0
- Unterstützte Funktionen: 6.0
- Unterstützte Funktionen: 5.0
Verbindungen und Datenbanken
- Jede Verbindung ist auf eine einzelne Cloud Firestore-Datenbank beschränkt.
- Eine Datenbank muss erstellt werden, bevor eine Verbindung zu ihr hergestellt werden kann.
Benennung
Die folgenden Unterschiede gelten für die Benennung von Teilen Ihres Datenmodells.
Sammlungen
- Sammlungsnamen, die mit
__.*__übereinstimmen, werden nicht unterstützt.
Felder
- Feldnamen, die mit
__.*__übereinstimmen, werden nicht unterstützt. - Leere Feldnamen werden nicht unterstützt.
Dokumente
- Die maximale Dokumentgröße beträgt 16 MiB.
- Die maximale Verschachtelungstiefe von Feldern beträgt 20. Jedes Feld vom Typ „Array“ und „Objekt“ erhöht die Gesamttiefe um eine Ebene.
- In Eventarc-Ereignissen sind Dokumente, die größer als 10 MiB sind, nicht in der Ereignisnutzlast enthalten.
Feld _id
- Das Feld
_idauf oberster Ebene muss eine ObjectId, ein String, eine 64-Bit-Ganzzahl, eine 32-Bit-Ganzzahl, ein Double, ein Binärwert oder ein Objekt sein. Andere BSON-Typen werden nicht unterstützt.
Werte
- Die BSON-Typen JavaScript, Symbol, DBPointer und Undefined werden nicht unterstützt.
Datum
- Datumswerte müssen in
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]liegen.
Decimal128
NaN, positive Unendlichkeit und negative Unendlichkeit werden beim Schreiben kanonisiert.- Arithmetische Vorgänge für Decimal128 werden nicht unterstützt.
Doppelt
NaN-Werte werden beim Schreiben kanonisiert.
Regulärer Ausdruck
- Die Optionen für reguläre Ausdrücke müssen gültig sein („i“, „m“, „s“, „u“ oder „x“) und in alphabetischer Reihenfolge ohne Wiederholungen angegeben werden.
Abfragen
- Die natürliche Sortierreihenfolge (Abfragen ohne explizite Sortierung) entspricht nicht der Einfügereihenfolge oder der aufsteigenden Sortierung nach
_id.
Zusammenfassungen
- Aggregationen sind auf 250 Phasen beschränkt.
- Die Phasen
$mergeund$outwerden nicht unterstützt. Eine vollständige Liste der unterstützten Phasen und Operatoren finden Sie im Abschnitt Befehle. - Die Phase
$facetunterstützt$randoder$samplein den Eingabephasen nicht, da es sich um einen flüchtigen Ausdruck handelt.
Schreibvorgänge
- Dokumente, deren Namen mit einem Dollarzeichen („$“) beginnen, können nicht mit der Upsert-Funktion von
updateoderfindAndModifyerstellt werden. - Achten Sie darauf, dass Ihr Verbindungsstring
retryWrites=falseenthält (oder verwenden Sie die für Ihren Treiber geeignete Methode), damit der Treiber nicht versucht, diese Funktion zu verwenden. Wiederholbare Schreibvorgänge werden nicht unterstützt.
Transaktionen
Snapshot-Isolation und serialisierbare Transaktionen werden unterstützt.
Standardmäßig werden für Transaktionen optimistische Nebenläufigkeitserkennungen mit Snapshot-Isolation verwendet.
Bedenken lesen
Cloud Firestore unterstützt die Lesemodi
snapshot,majorityundlinearizable. Der Standardwert istsnapshot, was sich auf die Snapshot-Isolierung bezieht.Verwenden Sie
linearizable, wenn die Anwendung strikte Konsistenz erfordert und Schreib-Skew-Anomalien verhindern muss. Bei anderen Arbeitslasten kannsnapshotdie Leistung verbessern und Transaktionskonflikte reduzieren.
Bedenken schreiben
- Es werden nur die Schreibvorgänge
w: 'majority'undw: 1unterstützt.
Leseeinstellung
- Es werden nur die Lesebedenken
primary,primaryPreferred,primary_preferred,secondary_preferredundnearestunterstützt.
Indexe
- Platzhalterindexe werden nicht unterstützt.
- Cloud Firestore erstellt nicht automatisch einen Index für
_id, sorgt aber dafür, dass die Werte von_idinnerhalb einer Sammlung eindeutig sind. Wenn Sie ein ähnliches Sortierverhalten erreichen möchten, müssen Sie explizit einen sortierten Index für das Feld_iderstellen. Achten Sie jedoch auf potenzielle Hotspot-Probleme, insbesondere wenn Ihre_id-Werte monoton steigen oder fallen (z.B. Zeitstempel), da sich dies auf die Leistung im großen Maßstab auswirken kann. - Indexe ohne aktivierten Multi-Key werden nicht automatisch basierend auf Schreibvorgängen in Multi-Key-Indexe geändert. Sie müssen die Option „multi-key“ beim Erstellen des Index aktivieren. Sie kann nicht mehr geändert werden.
Fehler
- Fehlercodes und -meldungen können sich zwischen Cloud Firestore und MongoDB unterscheiden.
Befehle
Die folgenden Verhaltensunterschiede gelten für bestimmte Befehle.
- Befehle, die nicht in den folgenden Tabellen aufgeführt sind, werden nicht unterstützt.
commentwird von den meisten Befehlen akzeptiert, aber ignoriert.maxTimeMSwird von den meisten Befehlen akzeptiert, aber möglicherweise ignoriert.
Abfragen
und Schreibvorgänge
| Befehl | Nicht unterstützte Felder |
|---|---|
|
|
|
|
|
|
|
|
(keine) |
|
|
In einer Aktualisierungsanweisung:
|
|
|
In einer DELETE-Anweisung:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(keine) |
|
|
(keine) |
Transaktionen
und Sitzungen
| Befehl | Nicht unterstützte Felder |
|---|---|
|
|
(keine) |
|
|
(keine) |
|
|
(keine) |
Verwaltung
| Befehl | Nicht unterstützte Felder | Hinweise |
|---|---|---|
|
|
|
filter muss leer sein, wenn angegeben. |
|
|
(keine) |
authorizedCollections muss „false“ sein, wenn angegeben. |
|
|
(keine) |
|
|
|
(keine) |
|
|
|
(keine) |
|
|
|
|
Dieser Befehl ist ein No-Op.capped muss „false“ sein, falls angegeben.
|
|
|
(keine) |
Einschränkungen beim Löschen von Sammlungen
Beim Löschen einer Sammlung gelten die folgenden Einschränkungen:
- Index neu erstellen: Sie können dieselbe Indexkonfiguration nicht sofort nach dem Löschen erstellen. Sie müssen warten, bis der Löschvorgang im Hintergrund abgeschlossen ist.
- Größenbeschränkung: Das Löschen großer Sammlungen kann zu Zeitüberschreitungen bei der Verbindung führen. Erhöhen Sie die Verbindungsfrist, wenn Zeitüberschreitungen auftreten. Alternativ können Sie die Bulk-Löschung verwenden.
- Ereignisse: Wenn Sie den Befehl
dropverwenden, werden für Eventarc keine Ereignisse zum Löschen von Sammlungen generiert.
Nächste Schritte
- Führen Sie die Kurzanleitung: Datenbank erstellen und eine Verbindung dazu herstellen aus.
- Eine vollständige Liste der unterstützten Funktionen finden Sie unter Unterstützte MongoDB-Datentypen, ‑Treiber und ‑Funktionen.