Verhaltensunterschiede

Auf dieser Seite werden die Verhaltensunterschiede zwischen 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 Firestore-Datenbank mit MongoDB-Kompatibilität 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 ein ObjectId-, String- oder 64-Bit-Ganzzahlwert 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

  • 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.

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 in Ihrem Verbindungsstring retryWrites=false enthalten ist (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-Transaktionen werden nicht unterstützt.
  • Transaktionen verwenden eine pessimistische Gleichzeitigkeitserkennung mit Sperrung. Um Sperrkonflikte zu vermeiden, sollten Sie die Datenmenge, die in einer Transaktion gelesen wird, begrenzen.

Indexe

  • Platzhalterindexe werden nicht unterstützt.
  • Eindeutige Indexe werden nicht unterstützt
  • Bei 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.

Bedenken lesen

  • Es wird nur die Lesebereitschaftsstufe majority unterstützt.

Bedenken schreiben

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

Lese-Einstellung

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

Fehler

  • Fehlercodes und ‑meldungen können sich zwischen 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