Driver dan jenis data MongoDB yang didukung
Tabel berikut mencantumkan alat pihak ketiga, driver, dan jenis data MongoDB yang didukung untuk Firestore dengan kompatibilitas MongoDB.
Jenis data
| Jenis BSON | Didukung |
|---|---|
| Bilangan Bulat 32-bit | Ya |
| Bilangan Bulat 64-bit | Ya |
| Array | Ya |
| Data Program Biner | Ya |
| Boolean | Ya |
| Tanggal | Ya |
| DBPointer | Tidak |
| Decimal128 | Ya |
| Ganda | Ya |
| JavaScript | Tidak |
| JavaScript (dengan cakupan) | Tidak |
| MaxKey | Ya |
| MinKey | Ya |
| Null | Ya |
| Objek | Ya |
| ObjectId | Ya |
| Ekspresi Reguler | Ya |
| String | Ya |
| Simbol | Tidak |
| Stempel waktu | Ya |
| Belum ditentukan | Tidak |
Dokumen _id
Bidang _id level teratas dalam dokumen harus berupa salah satu jenis berikut:
- ObjectId
- String
- Bilangan Bulat 64-bit
- Bilangan Bulat 32-bit
- Ganda
- Biner
- Objek
- Boolean
Total ukuran _id tidak boleh melebihi 1.500 byte.
Setiap nilai dalam ID berjenis Object juga harus berupa jenis ID yang didukung atau Array nilai, yang masing-masing berupa jenis ID yang didukung.
Jenis BSON lainnya tidak didukung.
Bahasa dan driver MongoDB
Firestore dengan kompatibilitas MongoDB mendukung versi driver berikut:
| Bahasa | Versi driver |
|---|---|
| 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) |
Dukungan autentikasi OIDC
Driver Go, C#, dan Ruby mendukung autentikasi OpenID Connect (OIDC) dari Google Cloud untuk semua versi driver yang didukung.
Driver Java, Node.js, dan Python mendukung autentikasi OIDC dari Google Cloud mulai dengan versi driver berikut:
- Java: 4.10
- Node.js: 6.7
- Python: 4.7
Alat pihak ketiga
Firestore dengan kompatibilitas MongoDB mendukung alat pihak ketiga yang dijelaskan di bagian ini.
| Alat | Deskripsi | Catatan |
|---|---|---|
| mongoimport | Alat Database MongoDB | Lihat Pemuatan data massal |
| mongoexport | Alat Database MongoDB | |
| mongodump | Alat Database MongoDB | |
| mongorestore | Alat Database MongoDB | Lihat Pemuatan data massal |
| mongosh | Shell MongoDB | |
| Mongoose | Alat pemodelan objek MongoDB | |
| MongoDB Compass | Alat GUI untuk eksplorasi data |
Kompatibilitas jenis BSON dan Firestore
Bagian ini merangkum pemetaan antara jenis BSON MongoDB dan nilai Firestore. Karena BSON adalah format biner dan Firestore API menggunakan Protocol Buffers, beberapa jenis dipetakan secara langsung, sementara jenis lainnya memerlukan representasi peta khusus.
Ringkasan pemetaan
Tabel berikut menunjukkan bagaimana jenis data BSON sesuai dengan representasi buffering protokol Firestore.
Pemetaan langsung
Jenis ini memiliki padanan langsung di kedua sistem.
| Jenis BSON | BSON | Firestore Proto | Catatan |
|---|---|---|---|
| Double | 1.23 |
double_value: 1.23 |
|
| String | "hello" |
string_value: "hello" |
|
| Benda di jalan | { |
map_value { |
|
| Array | [ |
array_value { |
|
| Biner (Subjenis Nol) | BinData(0, 'SGVsbG8=') |
bytes_value: "Hello" |
|
| Boolean | true |
boolean_value: true |
|
| Null | null |
null_value: NULL_VALUE |
|
| Bilangan Bulat 64-bit | Long('1234567890') |
integer_value: 1234567890 |
|
| Tanggal | ISODate('2026-05-22T04:00:00Z') |
timestamp_value { |
Nilai stempel waktu Firestore disimpan dengan presisi mikrodetik, tetapi apa pun yang melebihi presisi milidetik akan hilang saat dikonversi ke BSON. |
Jenis BSON yang direpresentasikan sebagai peta di Firestore API
Jenis BSON ini digabungkan dalam map_value Firestore dengan kunci khusus untuk menunjukkan jenisnya.
| Jenis BSON | BSON | Firestore Proto | Catatan |
|---|---|---|---|
| Bilangan Bulat 32-bit | 123 |
map_value { |
|
| Biner (Subjenis Bukan Nol) | BinData(1, 'AQIDBA==') |
map_value { |
Byte subjenis ditambahkan ke data. |
| ObjectId | ObjectId('67eea9446dc71ec469e9496a') |
map_value { |
String hex huruf kecil. |
| Stempel waktu (Internal) | Timestamp(123, 1) |
map_value { |
Stempel waktu internal MongoDB. |
| Ekspresi Reguler | RegExp('.*', 'im') |
map_value { |
|
| Kunci Min | MinKey() |
map_value { |
|
| Kunci Maks | MaxKey() |
map_value { |
|
| Decimal128 | Decimal128('4E7') |
map_value { |
Jenis Firestore yang tidak ada secara native di BSON
Jenis Firestore ini direpresentasikan sebagai peta terstruktur khusus saat dikonversi ke BSON.
| Jenis Firestore | BSON | Firestore Proto |
|---|---|---|
| GeoPoint | { |
geo_point_value { |
| Vektor | { |
map_value { |
| Referensi Dokumen | { |
reference_value: "projects/.../documents/col/doc" |
Nama kolom
Nama kolom dari MongoDB yang cocok dengan __.*__ akan di-escape dengan menyertakan
r: saat disimpan di Firestore. Misalnya, kolom BSON
__foo__ menjadi __r:foo__ di Firestore.
Jenis data BSON di SDK klien
Saat menggunakan SDK klien Firestore, Anda dapat menggunakan class SDK khusus untuk merepresentasikan jenis data BSON seperti desimal 128-bit, ekspresi reguler, dan stempel waktu 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);
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 }
Langkah berikutnya
- Jalankan Panduan memulai: Membuat database dan terhubung ke database tersebut.
- Pelajari Perbedaan perilaku.
- Untuk mengetahui perincian fitur yang didukung berdasarkan versi MongoDB, lihat