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 unter:
- 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
Für die Benennung von Teilen Ihres Datenmodells gelten die folgenden Unterschiede.
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 4 MiB.
- Die maximale Verschachtelungstiefe von Feldern beträgt 20. Jedes Feld vom Typ „Array“ und „Object“ erhöht die Gesamttiefe um eine Ebene.
_id
- Das
_id-Feld auf oberster Ebene muss ein ObjectId, String, 64‑Bit-Ganzzahl, 32‑Bit-Ganzzahl, Double, Binary oder Object 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 im Bereich
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]liegen.
Decimal128
- Die Werte
NaN, „positive infinity“ (plus unendlich) und „negative infinity“ (minus unendlich) werden beim Schreiben kanonisiert. - Arithmetische Operationen für Decimal128 werden nicht unterstützt.
Doppelt
NaN-Werte werden beim Schreiben kanonisiert.
Regulärer Ausdruck
- 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 Reihenfolge nach
_idaufsteigend.
Zusammenfassungen
- Zusammenfassungen 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 Felder
letundpipelinewerden in der Phase$lookupnicht unterstützt. - Die Phase
$facetunterstützt$randin 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 verwenden Transaktionen die optimistische Nebenläufigkeitserkennung mit Snapshot-Isolation.
Aussage lesen
Cloud Firestore unterstützt die Lesebedenken
snapshot,majorityundlinearizable. Der Standardwert istsnapshot, was sich auf die Snapshot-Isolation bezieht.Verwenden Sie
linearizable, wenn die Anwendung strikte Konsistenz erfordert und Anomalien durch Schreibabweichungen verhindert werden müssen. Bei anderen Arbeitslasten kannsnapshotdie Leistung verbessern und Transaktionskonflikte reduzieren.
Bedenken schreiben
- Es werden nur die Schreibvorgänge
w: 'majority'undw: 1unterstützt.
Lese-Einstellung
- Es werden nur die Lesebedenken
primary,primaryPreferred,primary_preferred,secondary_preferredundnearestunterstützt.
Indexe
- Platzhalterindexe werden nicht unterstützt.
- Mit Cloud Firestore wird nicht automatisch ein Index für
_iderstellt, aber es wird dafür gesorgt, dass die Werte von_idinnerhalb einer Sammlung eindeutig sind. - Indexe ohne aktivierte Multi-Key-Funktion werden nicht automatisch in Multi-Key-Indexe geändert, wenn Schreibvorgänge ausgeführt werden. Sie müssen die Option „Mehrere Schlüssel“ aktivieren, wenn Sie den Index erstellen. Die Option kann nicht 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 es angegeben wird. |
|
|
(keine) |
authorizedCollections muss „false“ sein, wenn es angegeben wird. |
|
|
(keine) |
|
|
|
(keine) |
|
|
|
(keine) |
|
|
|
|
Dieser Befehl ist ein No-Op.capped muss „false“ sein, wenn er angegeben wird.
|
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.