Questa pagina descrive le differenze di comportamento tra Cloud Firestore e MongoDB.
Per un'analisi dettagliata delle funzionalità supportate in base alla versione di MongoDB, consulta:
- Funzionalità supportate: 8.0
- Funzionalità supportate: 7.0
- Funzionalità supportate: 6.0
- Funzionalità supportate: 5.0
Connessioni e database
- Ogni connessione è limitata a un singolo database Cloud Firestore.
- Prima di connetterti a un database, devi crearlo.
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 dei campi corrispondenti a
__.*__non sono supportati. - I nomi dei campi vuoti non sono supportati.
Documenti
- La dimensione massima del documento è di 16 MiB.
- La profondità massima di nidificazione dei campi è 20. Ogni campo di tipo Array e Object aggiunge un livello alla profondità complessiva.
- Negli eventi Eventarc, i documenti di dimensioni superiori a 10 MiB non sono inclusi nel payload dell'evento.
Campo _id
- Il campo
_iddi primo livello deve essere un ObjectId, una stringa, un numero intero a 64 bit, un numero intero a 32 bit, un valore Double, un valore binario o un oggetto. Altri tipi BSON 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 normalizzati in fase di scrittura. - Le operazioni aritmetiche su Decimal128 non sono supportate.
Doppio
- I valori
NaNvengono canonizzati in fase di scrittura.
Espressione regolare
- Le opzioni delle espressioni regolari 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 per
_idin ordine crescente.
Aggregazioni
- Le aggregazioni sono limitate a 250 fasi.
- Le fasi
$mergee$outnon sono supportate. Consulta la sezione Comandi per un elenco completo delle fasi e degli operatori supportati. - La fase
$facetnon supporta$rando$samplenelle fasi di input perché è un'espressione volatile.
Scritture
- I documenti con nomi che iniziano con un segno di dollaro ("$") non possono essere creati utilizzando la funzionalità di upsert di
updateofindAndModify. - 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 concorrenza ottimistici con isolamento degli snapshot.
Lettura di dati sui problemi
Cloud Firestore supporta i problemi di lettura
snapshot,majorityelinearizable. Il valore predefinito èsnapshot, che si riferisce all'isolamento degli snapshot.Utilizza
linearizablequando l'applicazione richiede una coerenza rigorosa e deve impedire anomalie di disallineamento della scrittura. Per altri workload,snapshotpuò migliorare le prestazioni e ridurre la contesa delle transazioni.
Scrittura di dati sui problemi
- Sono supportati solo i write concern
w: 'majority'ew: 1.
Preferenza di lettura
- Sono supportati solo i read concern
primary,primaryPreferred,primary_preferred,secondary_preferredenearest.
Indici
- Gli indici con caratteri jolly non sono supportati.
- Cloud Firestore non crea automaticamente un indice su
_id, ma garantisce che i valori di_idsiano univoci all'interno di una raccolta. Per ottenere un comportamento di ordinamento simile, devi creare esplicitamente un indice ordinato nel campo_id. Tuttavia, tieni presente i potenziali problemi di hotspot, soprattutto se i valori_idaumentano o diminuiscono in modo monotono (ad esempio i timestamp), in quanto ciò può influire sulle prestazioni su larga scala. - Gli indici senza chiave multipla abilitata non vengono modificati automaticamente in indici con chiave multipla in base alle operazioni di scrittura. Devi abilitare 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 e MongoDB.
Comandi
Le seguenti differenze di comportamento si applicano a comandi specifici.
- I comandi non elencati nelle seguenti tabelle non sono supportati.
commentè accettato dalla maggior parte dei comandi, ma viene ignorato.maxTimeMSè accettato dalla maggior parte dei comandi, ma potrebbe essere ignorato.
Query
e scritture
| Comando | Campi non supportati |
|---|---|
|
|
|
|
|
|
|
|
(nessuno) |
|
|
All'interno di un'istruzione UPDATE:
|
|
|
All'interno di un'istruzione DELETE:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(nessuno) |
|
|
(nessuno) |
Transazioni
e sessioni
| Comando | Campi non supportati |
|---|---|
|
|
(nessuno) |
|
|
(nessuno) |
|
|
(nessuno) |
Amministrazione
| Comando | Campi non supportati | Note |
|---|---|---|
|
|
|
filter deve essere vuoto, se fornito. |
|
|
(nessuno) |
Se fornito, authorizedCollections deve essere false. |
|
|
(nessuno) |
|
|
|
(nessuno) |
|
|
|
(nessuno) |
|
|
|
|
Questo comando non esegue alcuna operazione.capped deve essere false se fornito.
|
|
|
(nessuno) |
Limitazioni per l'eliminazione delle raccolte
Quando elimini una raccolta, si applicano le seguenti limitazioni:
- Ricreazione dell'indice: non puoi creare la stessa configurazione dell'indice immediatamente dopo un'eliminazione. Devi attendere il completamento dell'eliminazione in background.
- Limite di dimensioni: l'eliminazione di raccolte di grandi dimensioni potrebbe causare timeout della connessione. Se si verificano timeout, aumenta la scadenza della connessione. In alternativa, puoi utilizzare l'eliminazione collettiva.
- Eventi: gli eventi di raccolta di eliminazione non vengono generati per Eventarc quando utilizzi il comando
drop.
Passaggi successivi
- Esegui la Guida rapida: crea un database e connettiti.
- Per un elenco completo delle funzionalità supportate, consulta Tipi di dati, driver e funzionalità MongoDB supportati.