Verhaltensunterschiede

Nur für die Cloud Firestore Enterprise-Edition relevant.

Auf dieser Seite werden die Verhaltensunterschiede zwischen Cloud Firestore mit MongoDB-Kompatibilität und MongoDB beschrieben.

Eine Aufschlüsselung der unterstützten Funktionen je nach MongoDB-Version finden Sie unter:

Verbindungen und Datenbanken

  • Jede Verbindung ist auf eine einzelne Cloud Firestore mit MongoDB-Kompatibilitätsdatenbank 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

  • „Document“ _id (Feld der obersten Ebene) muss eine ObjectId, ein String oder eine 64-Bit-Ganzzahl sein. Andere BSON-Typen werden nicht unterstützt.
  • Leere Strings („“) und 64-Bit-0 (0L) werden nicht unterstützt.

Werte

  • Die BSON-Typen „JavaScript“, „Symbol“, „DBPointer“ und „Undefined“ werden nicht unterstützt.

Datum

  • Datumswerte müssen im Format [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z] angegeben werden.

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

  • 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 $merge und $out werden nicht unterstützt. Eine vollständige Liste der unterstützten Phasen und Operatoren finden Sie im Abschnitt Befehle.
  • In der Phase $lookup kann nur ein foreignField für _id angegeben werden.

Schreibvorgänge

  • Dokumente mit Namen, die mit einem Dollarzeichen („$“) beginnen, können nicht mit der Upsert-Funktion von update oder findAndModify erstellt werden.
  • Achten Sie darauf, dass Ihr Verbindungsstring retryWrites=false enthä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.

Bedenken lesen

  • Cloud Firestore mit MongoDB-Kompatibilität unterstützt die Lesebereiche snapshot, majority und linearizable. Der Standardwert ist snapshot, 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 kann snapshot die Leistung verbessern und Transaktionskonflikte reduzieren.

Bedenken schreiben

  • Es werden nur die Schreibvorgänge w: 'majority' und w: 1 unterstützt.

Lese-Einstellungen

  • Es werden nur die Lesebedenken primary, primaryPreferred, primary_preferred, secondary_preferred und nearest unterstützt.

Indexe

  • Platzhalterindexe werden nicht unterstützt.
  • Bei Cloud Firestore mit MongoDB-Kompatibilität wird nicht automatisch ein Index für _id erstellt, aber es wird dafür gesorgt, dass die Werte von _id innerhalb 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 mit MongoDB-Kompatibilität 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.
  • maxTimeMS wird von den meisten Befehlen akzeptiert, kann aber ignoriert werden.

Abfragen und Schreibvorgänge

Befehl Nicht unterstützte Felder

find

  • comment
  • readConcern
  • max
  • min
  • returnKey
  • showRecordId
  • tailable
  • oplogReplay
  • noCursorTimeout
  • awaitData
  • allowPartialResults
  • collation
  • allowDiskUsage
  • let

aggregate

  • bypassDocumentValidation
  • readConcern
  • collation
  • hint
  • comment
  • let

insert

  • bypassDocumentValidation
  • comment

update

  • collation
  • arrayFilters
  • hint

delete

  • comment
  • write

In einer DELETE-Anweisung:

  • collation
  • hint

findAndModify

  • fields
  • bypassDocumentValidation
  • collation
  • arrayFilters
  • hint
  • comment
  • let

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(keine)

Transaktionen und Sitzungen

Befehl Nicht unterstützte Felder

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(keine)

Verwaltung

Befehl Nicht unterstützte Felder Hinweise

listDatabases

  • authorizedDatabases
  • comment
filter muss leer sein, wenn es angegeben wird.

listCollections

  • comment
authorizedCollections muss „false“ sein, wenn es angegeben wird.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Dieser Befehl hat keine Auswirkungen.

capped muss „false“ sein, wenn es angegeben wird.

Nächste Schritte