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 di campo vuoti non sono supportati.
Documenti
- La dimensione massima del documento è 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 canonizzati in fase di scrittura. - Le operazioni aritmetiche su Decimal128 non sono supportate.
Doppio
- I valori
NaNvengono canonizzati durante la 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 in base a
_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 i controlli della concorrenza ottimistica con isolamento degli snapshot.
Lettura di dati sulle preoccupazioni
Cloud Firestore supporta i read concern
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 i conflitti tra transazioni.
Scrittura di dati sulle preoccupazioni
- Sono supportati solo i write concern
w: 'majority'ew: 1.
Preferenza di lettura
- Sono supportati solo gli interessi di lettura
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 multi-chiave abilitata non vengono modificati automaticamente in indici multi-chiave in base alle operazioni di scrittura. Devi attivare la chiave multipla 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 tabelle seguenti 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) |
authorizedCollections deve essere false, se fornito. |
|
|
(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.