Differenze di comportamento

Questa pagina descrive le differenze di comportamento tra Firestore con compatibilità MongoDB e MongoDB.

Per una suddivisione delle funzionalità supportate in base alla versione di MongoDB, consulta:

Connessioni e database

  • Ogni connessione è limitata a un singolo database Firestore con compatibilità MongoDB.
  • È necessario creare un database prima di connettersi.

Denominazione

Le seguenti differenze si applicano alla denominazione delle parti del modello di dati.

Raccolte

  • I nomi delle raccolte corrispondenti a __.*__ non sono supportati.

Campi

  • I nomi di campo corrispondenti a __.*__ non sono supportati.
  • I nomi di campo vuoti non sono supportati.

Documenti

  • La dimensione massima del documento è 4 MiB.
  • La profondità massima di annidamento dei campi è 20. Ogni campo di tipo Array e Object aggiunge un livello alla profondità complessiva.

_id

  • Il documento _id (campo di primo livello) deve essere un ObjectId, una stringa o un numero intero di 64 bit. Gli altri tipi BSON non sono supportati.
  • La stringa vuota ("") e 0 a 64 bit (0L) non sono supportati.

Valori

  • I tipi BSON JavaScript, Symbol, DBPointer e Undefined non sono supportati.

Data

  • I valori delle date devono rientrare in [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].

Decimal128

  • I valori NaN, infinito positivo e infinito negativo vengono canonicizzati in fase di scrittura.
  • Le operazioni aritmetiche su Decimal128 non sono supportate.

Doppio

  • I valori NaN vengono canonizzati durante la scrittura.

Espressione regolare

  • Le opzioni di espressione regolare devono essere valide ("i", "m", "s", "u" o "x") e fornite in ordine alfabetico senza ripetizioni.

Query

  • L'ordinamento naturale (query senza un'ordinamento esplicito) non corrisponde all'ordine di inserimento o all'ordinamento in ordine crescente per _id.

Aggregazioni

  • Le aggregazioni sono limitate a 250 fasi.
  • Le fasi $merge e $out non sono supportate. Per un elenco completo delle fasi e degli operatori supportati, consulta la sezione Comandi.

Scritture

  • I documenti con nomi che iniziano con il simbolo del dollaro ("$") non possono essere creati utilizzando la funzionalità di upsert di update o findAndModify.
  • Assicurati che la stringa di connessione includa retryWrites=false (o utilizza il metodo appropriato per il tuo driver) per assicurarti che il driver non tenti di utilizzare questa funzionalità. Le scritture ripetibili non sono supportate.

Transazioni

  • Le transazioni snapshot non sono supportate.
  • Le transazioni utilizzano controlli di concorrenza pessimistici con blocco. Per evitare la contesa dei blocchi, limita la quantità di dati letti in una transazione.

Indici

  • Gli indici con caratteri jolly non sono supportati.
  • Gli indici univoci non sono supportati
  • Firestore con compatibilità con MongoDB non crea automaticamente un indice su _id, ma garantisce che i valori di _id siano univoci all'interno di una raccolta.
  • Gli indici senza multi-key abilitati non vengono modificati automaticamente in indici multi-chiave in base alle operazioni di scrittura. Devi attivare la funzionalità multi-chiave quando crei l'indice e l'opzione non può essere modificata.

Leggi preoccupazione

  • È supportato solo il livello di preoccupazione per la lettura majority.

Scrivi un dubbio

  • Sono supportati solo i problemi di scrittura w: 'majority' e w: 1.

Preferenza di lettura

  • Sono supportati solo i problemi di lettura primary, primaryPreferred, primary_preferred, secondary_preferred e nearest.

Errori

  • I codici e i messaggi di errore possono variare tra Firestore con compatibilità con MongoDB e MongoDB.

Comandi

Le seguenti differenze di comportamento si applicano a comandi specifici.

  • I comandi non elencati nelle seguenti tabelle non sono supportati.
  • maxTimeMS è accettato dalla maggior parte dei comandi, ma può essere ignorato.

Query e scritture

Comando Campi non supportati

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

All'interno di un'istruzione DELETE:

  • collation
  • hint

findAndModify

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

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(nessuno)

Transazioni e sessioni

Comando Campi non supportati

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(nessuno)

Amministrazione

Comando Campi non supportati Note

listDatabases

  • authorizedDatabases
  • comment
filter deve essere vuoto se specificato.

listCollections

  • comment
authorizedCollections deve essere falso se fornito.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Questo comando non esegue alcuna operazione.

capped deve essere falso se specificato.

Passaggi successivi