Differenze di comportamento

Pertinente solo per la versione Enterprise di Cloud Firestore.

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

Per un elenco dettagliato delle funzionalità supportate a seconda della versione di MongoDB, consulta:

Connessioni e database

  • Ogni connessione è limitata a un singolo database Cloud Firestore con compatibilità MongoDB.
  • Prima di connettersi a un database, è necessario crearlo.

Denominazione

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

Raccolte

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

Campi

  • I nomi dei campi corrispondenti a __.*__ non sono supportati.
  • I nomi dei campi vuoti non sono supportati.

Documenti

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

_id

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

Valori

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

Data

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

Decimal128

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

Doppio

  • I valori NaN vengono canonizzati durante la scrittura.

Espressione regolare

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

Query

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

Aggregazioni

  • Le aggregazioni sono limitate a 250 fasi.
  • Le fasi $merge e $out non sono supportate. Per un elenco completo di fasi e operatori supportati, consulta la sezione Comandi.
  • La fase $lookup è limitata alla specifica di un foreignField su _id.

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

  • Sono supportati l'isolamento degli snapshot e le transazioni serializzabili.

  • Per impostazione predefinita, le transazioni utilizzano controlli della contemporaneità ottimistici con isolamento dello snapshot.

Leggi il problema

  • Cloud Firestore con compatibilità MongoDB supporta i livelli di isolamento snapshot, majority e linearizable. Il valore predefinito è snapshot, che si riferisce all'isolamento dello snapshot.

    Utilizza linearizable quando l'applicazione richiede una coerenza rigorosa e deve impedire anomalie di asimmetria di scrittura. Per altri carichi di lavoro, snapshot può migliorare le prestazioni e ridurre la contesa delle transazioni.

Scrittura di un problema

  • Sono supportati solo i write concern w: 'majority' e w: 1.

Preferenza di lettura

  • Sono supportati solo i livelli di isolamento primary, primaryPreferred, primary_preferred, secondary_preferred e nearest.

Indici

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

Errori

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

Comandi

Le seguenti differenze di comportamento si applicano a comandi specifici.

  • I comandi non elencati nelle tabelle seguenti non sono supportati.
  • maxTimeMS è accettato dalla maggior parte dei comandi, ma potrebbe 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 di eliminazione:

  • 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
Se specificato, filter deve essere vuoto.

listCollections

  • comment
Se fornito, authorizedCollections deve essere false.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Questo comando è un'operazione no-op.

capped deve essere false, se fornito.

Passaggi successivi