Tipi di dati e driver MongoDB supportati
Le tabelle seguenti elencano i tipi di dati, i driver e gli strumenti di terze parti MongoDB supportati per Firestore con compatibilità MongoDB.
Tipi di dati
| Tipo BSON | Supportato |
|---|---|
| Numero intero a 32 bit | Sì |
| Numero intero a 64 bit | Sì |
| Array | Sì |
| Dati binari | Sì |
| Booleano | Sì |
| Data | Sì |
| DBPointer | No |
| Decimal128 | Sì |
| Doppio | Sì |
| JavaScript | No |
| JavaScript (con ambito) | No |
| MaxKey | Sì |
| MinKey | Sì |
| Null | Sì |
| Oggetto | Sì |
| ObjectId | Sì |
| Espressione regolare | Sì |
| Stringa | Sì |
| Simbolo | No |
| Timestamp | Sì |
| Non definito | No |
_id del documento
Il campo _id di primo livello in un documento deve essere uno dei seguenti tipi:
- ObjectId
- Stringa
- Numero intero a 64 bit
- Numero intero a 32 bit
- Doppio
- Binario
- Oggetto
- Booleano
La dimensione totale di _id non deve superare i 1500 byte.
Ogni valore all'interno di un ID di tipo Object deve essere anche di un tipo di ID supportato o un array di valori, ognuno dei quali è di un tipo di ID supportato.
Altri tipi BSON non sono supportati.
Linguaggi e driver MongoDB
Firestore con compatibilità MongoDB supporta le seguenti versioni dei driver:
| Lingua | Versioni dei driver |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| Vai | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
Supporto dell'autenticazione OIDC
I driver Go, C# e Ruby supportano l'autenticazione OpenID Connect (OIDC) da Google Cloud per tutte le versioni dei driver supportate.
I driver Java, Node.js e Python supportano l'autenticazione OIDC diGoogle Cloud a partire dalle seguenti versioni dei driver:
- Java: 4.10
- Node.js: 6.7
- Python: 4,7
Strumenti di terze parti
Firestore con compatibilità MongoDB supporta gli strumenti di terze parti descritti in questa sezione.
| Strumento | Descrizione | Note |
|---|---|---|
| mongoimport | Strumenti di database MongoDB | Consulta Caricamento dei dati in blocco |
| mongoexport | Strumenti di database MongoDB | |
| mongodump | Strumenti di database MongoDB | |
| mongorestore | Strumenti di database MongoDB | Consulta Caricamento dei dati in blocco |
| mongosh | Shell MongoDB | |
| Mongoose | Strumento di modellazione degli oggetti MongoDB | |
| MongoDB Compass | Strumento GUI per l'esplorazione dei dati |
Compatibilità dei tipi BSON e Firestore
Questa sezione riassume la mappatura tra i tipi BSON di MongoDB e i valori di Firestore. Poiché BSON è un formato binario e l'API Firestore utilizza i buffer di protocollo, alcuni tipi vengono mappati direttamente, mentre altri richiedono rappresentazioni di mappe speciali.
Panoramica della mappatura
Le tabelle seguenti mostrano la corrispondenza tra i tipi di dati BSON e le rappresentazioni dei buffer di protocollo Firestore.
Mappature dirette
Questi tipi hanno un equivalente diretto in entrambi i sistemi.
| Tipo BSON | BSON | Proto Firestore | Note |
|---|---|---|---|
| Doppia | 1.23 |
double_value: 1.23 |
|
| Stringa | "hello" |
string_value: "hello" |
|
| Oggetto | { |
map_value { |
|
| Array | [ |
array_value { |
|
| Binary (Subtype Zero) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| Boolean | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| Numero intero a 64 bit | Long('1234567890') |
integer_value: 1234567890 |
|
| Data | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
I valori dei timestamp di Firestore vengono archiviati con una precisione di un microsecondo, ma qualsiasi precisione superiore a un millisecondo viene persa durante la conversione in BSON. |
Tipi BSON rappresentati come mappe nell'API Firestore
Questi tipi BSON sono aggregati nel map_value di Firestore con chiavi speciali per indicare il tipo.
| Tipo BSON | BSON | Proto Firestore | Note |
|---|---|---|---|
| Numero intero a 32 bit | 123 |
map_value { |
|
| Binary (Non-Zero Subtype) | BinData(1, 'AQIDBA==') |
map_value { |
Byte del sottotipo anteposto ai dati. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
Stringa esadecimale minuscola. |
| Timestamp (interno) | Timestamp(123, 1) |
map_value { |
Timestamp interno di MongoDB. |
| Espressione regolare | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Chiave massima | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Tipi di Firestore non nativi in BSON
Questi tipi di Firestore sono rappresentati come mappe strutturate in modo speciale quando vengono convertiti in BSON.
| Tipo di Firestore | BSON | Proto Firestore |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Vector | { |
map_value { |
| Riferimento documento | { |
reference_value: "projects/.../documents/col/doc" |
Nomi dei campi
I nomi dei campi di MongoDB che corrispondono a __.*__ vengono sottoposti a escape incorporando r: quando vengono archiviati in Firestore. Ad esempio, un campo BSON __foo__ diventa __r:foo__ in Firestore.
Tipi di dati BSON negli SDK client
Quando utilizzi gli SDK client di Firestore, puoi utilizzare classi SDK specializzate per rappresentare i tipi di dati BSON come decimali a 128 bit, espressioni regolari e timestamp BSON.
Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore'); // Setting fields with BSON data types const res = await db.collection('foo').doc('bar').set({ regex: new RegexValue('myRegexPattern', 'i'), decimal: new Decimal128Value('0.73e-7'), bsonTimestamp: new BsonTimestamp(1732754912, 500), });
Java
import com.google.cloud.firestore.BsonTimestamp; import com.google.cloud.firestore.Decimal128Value; import com.google.cloud.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Java
Android
import com.google.firebase.firestore.BsonTimestamp; import com.google.firebase.firestore.Decimal128Value; import com.google.firebase.firestore.RegexValue; import java.util.HashMap; import java.util.Map; Map<String, Object> data = new HashMap<>(); data.put("regex", new RegexValue("myRegexPattern", "i")); data.put("decimal", new Decimal128Value("0.73e-7")); data.put("bson_timestamp", new BsonTimestamp(1732754912, 500)); db.collection("foo").doc("bar").set(data);
Vai
import ( "context" "cloud.google.com/go/firestore" ) func writeBsonTypes(ctx context.Context, client *firestore.Client) error { _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{ "regex": firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"}, "decimal": firestore.Decimal128Value{Value: "0.73e-7"}, "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500}, }) return err }
Passaggi successivi
- Esegui la Guida rapida: crea un database e connettiti.
- Scopri di più sulle differenze di comportamento.
- Per un'analisi dettagliata delle funzionalità supportate in base alla versione di MongoDB, consulta