W poniższych tabelach znajdziesz obsługiwane typy danych MongoDB, sterowniki i narzędzia innych firm dla Cloud Firestore.
Typy danych
| Typ BSON | Obsługiwane |
|---|---|
| 32-bitowa liczba całkowita | Tak |
| 64-bitowa liczba całkowita | Tak |
| Tablica | Tak |
| Dane binarne | Tak |
| Wartość logiczna | Tak |
| Data | Tak |
| DBPointer | Nie |
| Decimal128 | Tak |
| Liczba zmiennoprzecinkowa | Tak |
| JavaScript | Nie |
| JavaScript (z zakresem) | Nie |
| MaxKey | Tak |
| MinKey | Tak |
| Null | Tak |
| Obiekt | Tak |
| ObjectId | Tak |
| Wyrażenie regularne | Tak |
| Ciąg znaków | Tak |
| Symbol | Nie |
| Sygnatura czasowa | Tak |
| Nie określono | Nie |
_id dokumentu
Pole _id najwyższego poziomu w dokumencie musi być jednego z tych typów:
- ObjectId
- Ciąg znaków
- 64-bitowa liczba całkowita
- 32-bitowa liczba całkowita
- Liczba zmiennoprzecinkowa
- Binarne
- Obiekt
- Wartość logiczna
Łączny rozmiar _id nie może przekraczać 1500 bajtów.
Każda wartość w identyfikatorze typu Object musi być również obsługiwanym typem identyfikatora lub tablicą wartości, z których każda jest obsługiwanym typem identyfikatora.
Inne typy BSON nie są obsługiwane.
Języki i sterowniki MongoDB
Cloud Firestore obsługuje te wersje sterowników:
| Język | Wersje sterowników |
|---|---|
| Java | 5.x |
| Node.js | 6.x 5.x |
| Python | 4.x 3.x (x ≥ 12) |
| Go | 2.x |
| C# | 3.x |
| Ruby | 2.x (x ≥ 16) |
Obsługa uwierzytelniania OIDC
Sterowniki Go, C# i Ruby obsługują uwierzytelnianie OpenID Connect (OIDC) z Google Cloud we wszystkich obsługiwanych wersjach sterowników.
Sterowniki Java, Node.js i Python obsługują uwierzytelnianie OIDC z Google Cloud, począwszy od tych wersji sterowników:
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
Narzędzia innych firm
Cloud Firestore obsługuje narzędzia innych firm opisane w tej sekcji.
| Narzędzie | Opis | Notes |
|---|---|---|
| mongoimport | Narzędzia bazy danych MongoDB | Zobacz Zbiorcze wczytywanie danych . |
| mongoexport | Narzędzia bazy danych MongoDB | |
| mongodump | Narzędzia bazy danych MongoDB | |
| mongorestore | Narzędzia bazy danych MongoDB | Zobacz Zbiorcze wczytywanie danych . |
| mongosh | Powłoka MongoDB | |
| Mongoose | Narzędzie do modelowania obiektów MongoDB | |
| MongoDB Compass | Narzędzie GUI do eksploracji danych |
Zgodność typów BSON i Cloud Firestore
Ta sekcja zawiera podsumowanie mapowania między typami BSON MongoDB a wartościami Cloud Firestore. BSON jest formatem binarnym, a interfejs API Cloud Firestore używa buforów protokołu, dlatego niektóre typy są mapowane bezpośrednio, a inne wymagają specjalnych reprezentacji map.
Omówienie mapowania
W tabelach poniżej znajdziesz informacje o tym, jak typy danych BSON odpowiadają reprezentacjom buforów protokołu Cloud Firestore.
Mapowania bezpośrednie
Te typy mają bezpośredni odpowiednik w obu systemach.
| Typ BSON | BSON | Cloud Firestore Proto | Uwagi |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| Tekst | "hello" |
string_value: "hello" |
|
| Obiekt | { |
map_value { |
|
| Tablica | [ |
array_value { |
|
| Binary (Subtype Zero) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| Wartość logiczna | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| 64-bitowa liczba całkowita | Long('1234567890') |
integer_value: 1234567890 |
|
| Data | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
Wartości sygnatur czasowych Cloud Firestore są przechowywane z dokładnością do mikrosekund, ale podczas konwersji na format BSON tracona jest dokładność większa niż milisekunda. |
Typy BSON reprezentowane jako mapy w interfejsie API Cloud Firestore
Te typy BSON są opakowane w Cloud Firestore map_value ze specjalnymi kluczami oznaczającymi typ.
| Typ BSON | BSON | Cloud Firestore Proto | Uwagi |
|---|---|---|---|
| 32-bitowa liczba całkowita | 123 |
map_value { |
|
| Binarny (podtyp niezerowy) | BinData(1, 'AQIDBA==') |
map_value { |
Bajt podtypu dodany na początku danych. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
Ciąg szesnastkowy składający się z małych liter. |
| Sygnatura czasowa (wewnętrzna) | Timestamp(123, 1) |
map_value { |
Wewnętrzna sygnatura czasowa MongoDB. |
| Wyrażenie regularne | RegExp('.*', 'im') |
map_value { |
|
| Min Key | MinKey() |
map_value { |
|
| Tryb maksymalny | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Typy Cloud Firestore nie są natywnie obsługiwane w BSON
Te typy Cloud Firestore są reprezentowane jako specjalnie ustrukturyzowane mapy po przekonwertowaniu na BSON.
| Cloud Firestore – typ | BSON | Cloud Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Wektor | { |
map_value { |
| Dokument referencyjny | { |
reference_value: "projects/.../documents/col/doc" |
Nazwy pól
Nazwy pól z MongoDB, które pasują do __.*__, są przekształcane przez dodanie r:, gdy są przechowywane w Cloud Firestore. Na przykład pole BSON __foo__ staje się polem __r:foo__ w Cloud Firestore.
Typy danych BSON w pakietach SDK klienta
Jeśli używasz pakietów SDK klienta Cloud Firestore, możesz używać specjalistycznych klas pakietu SDK do reprezentowania typów danych BSON, takich jak 128-bitowe liczby dziesiętne, wyrażenia regularne i sygnatury czasowe 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
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);
Go
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 }
Co dalej?
- Wykonaj czynności opisane w artykule Krótkie wprowadzenie: tworzenie bazy danych i łączenie się z nią.
- Dowiedz się więcej o różnicach w zachowaniu.
- Zestawienie obsługiwanych funkcji w zależności od wersji MongoDB znajdziesz w artykule