Differenze di comportamento
Questa pagina descrive le differenze di comportamento tra Firestore con compatibilità MongoDB 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 Firestore con compatibilità MongoDB.
- Prima di connetterti a un database, devi crearlo.
Denominazione
Le seguenti differenze si applicano alla denominazione delle parti del modello dei 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 canonicalizzati in fase di scrittura. - Le operazioni aritmetiche su Decimal128 non sono supportate.
Doppio
- I valori
NaNvengono standardizzati 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 crescente per
_id.
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 sulle preoccupazioni
Firestore con compatibilità MongoDB supporta gli hint 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 i conflitti tra 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.
- Firestore con compatibilità MongoDB 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 di errore e i messaggi possono variare tra 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.
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:
- Limite di dimensioni: l'eliminazione di raccolte di grandi dimensioni potrebbe causare timeout della connessione. Aumenta la scadenza della connessione se si verificano timeout. 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.