Auf dieser Seite werden die Verhaltensunterschiede zwischen Cloud Firestore und MongoDB beschrieben.
Eine Übersicht 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 übergeordnete Feld
_idmuss 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-Isolierung verwendet.
Bedenken lesen
Cloud Firestore unterstützt die Leseeinstellungen
snapshot,majorityundlinearizable. Der Standardwert istsnapshot, was sich auf die Snapshot-Isolierung bezieht.Verwenden Sie
linearizable, wenn die Anwendung strikte Konsistenz erfordert und Schreibabweichungen verhindert werden müssen. Bei anderen Arbeitslasten kannsnapshotdie Leistung verbessern und Transaktionskonflikte reduzieren.
Anliegen 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 bei großen Datenmengen 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 für mehrere Schlüssel 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, kann aber ignoriert werden.
Abfragen
und Schreibvorgänge
| Befehl | Nicht unterstützte Felder |
|---|---|
|
|
|
|
|
|
|
|
(keine) |
|
|
In einer Update-Anweisung:
|
|
|
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.