Desteklenen MongoDB veri türleri ve sürücüleri

Aşağıdaki tablolarda, Cloud Firestore için desteklenen MongoDB veri türleri, sürücüleri ve üçüncü taraf araçları listelenmiştir.

Veri türleri

BSON Türü Destekleniyor
32 bit tam sayı Evet
64 bit tam sayı Evet
Dizi Evet
İkili Veri Evet
Boole Evet
Tarih Evet
DBPointer Hayır
Decimal128 Evet
Çift Evet
JavaScript Hayır
JavaScript (kapsamlı) Hayır
MaxKey Evet
MinKey Evet
Boş Evet
Nesne Evet
ObjectId Evet
Normal İfade Evet
Dize Evet
Sembol Hayır
Zaman damgası Evet
Tanımlanmadı Hayır

_id dokümanı

Bir dokümandaki üst düzey _id alanı aşağıdaki türlerden biri olmalıdır:

  • ObjectId
  • Dize
  • 64 bit tam sayı
  • 32 bit tam sayı
  • Çift
  • İkili
  • Nesne
  • Boole

_id toplam boyutu 1.500 baytı aşmamalıdır.

Nesne türündeki bir kimlikteki her değer de desteklenen bir kimlik türünde veya her biri desteklenen bir kimlik türünde olan bir değer dizisi olmalıdır.

Diğer BSON türleri desteklenmez.

Diller ve MongoDB sürücüleri

Cloud Firestore aşağıdaki sürücü sürümlerini destekler:

Dil Sürücü sürümleri
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)

OIDC kimlik doğrulama desteği

Go, C# ve Ruby sürücüleri, desteklenen tüm sürücü sürümleri için Google Cloud üzerinden OpenID Connect (OIDC) kimlik doğrulamasını destekler.

Java, Node.js ve Python sürücüleri, aşağıdaki sürücü sürümlerinden itibaren Google Cloud üzerinden OIDC kimlik doğrulamasını destekler:

  • Java: 4.10
  • Node.js: 6.7
  • Python: 4,7

Üçüncü taraf araçlar

Cloud Firestore, bu bölümde açıklanan üçüncü taraf araçlarını destekler.

Araç Açıklama Notlar
mongoimport MongoDB Veritabanı Araçları Toplu veri yükleme bölümüne bakın.
mongoexport MongoDB Veritabanı Araçları
mongodump MongoDB Veritabanı Araçları
mongorestore MongoDB Veritabanı Araçları Toplu veri yükleme bölümüne bakın.
mongosh MongoDB Shell
Mongoose MongoDB nesne modelleme aracı
MongoDB Compass Veri keşfi için GUI aracı

BSON ve Cloud Firestore türü uyumluluğu

Bu bölümde, MongoDB BSON türleri ile Cloud Firestore değerleri arasındaki eşleme özetlenmektedir. BSON ikili biçim olduğundan ve Cloud Firestore API'si protokol arabellekleri kullandığından bazı türler doğrudan eşlenirken diğerleri için özel eşleme temsilleri gerekir.

Eşlemeye genel bakış

Aşağıdaki tablolarda, BSON veri türlerinin Cloud Firestore protokol arabelleği temsillerine nasıl karşılık geldiği gösterilmektedir.

Doğrudan eşlemeler

Bu türlerin her iki sistemde de doğrudan bir karşılığı vardır.

BSON Türü BSON Cloud Firestore Proto Notlar
Double 1.23 double_value: 1.23
String "hello" string_value: "hello"
Nesne
{
"a": 1.23
}
map_value {
fields {
key: "a"
value {
double_value: 1.23
}
}
}
Dizi
[
1.23,
"a"
]
array_value {
values {
double_value: 1.23
}
values {
string_value: "a"
}
}
İkili (Alt Tür Sıfır) BinData(0, 'SGVsbG8=') bytes_value: "Hello"
Boole true boolean_value: true
Null null null_value: NULL_VALUE
64 bit tam sayı Long('1234567890') integer_value: 1234567890
Tarih ISODate('2026-05-22T04:00:00Z')
timestamp_value {
seconds: 1779470400
nanos: 0
}
Cloud Firestore zaman damgası değerleri mikrosaniye hassasiyetinde depolanır ancak BSON'a dönüştürülürken milisaniye hassasiyetinin ötesindeki her şey kaybolur.

Cloud Firestore API'de eşleme olarak temsil edilen BSON türleri

Bu BSON türleri, türü belirtmek için özel anahtarlarla Cloud Firestore map_value içine sarmalanır.

BSON Türü BSON Cloud Firestore Proto Notlar
32 bit tam sayı 123
map_value {
fields {
key: "__int__"
value {
integer_value: 123
}
}
}
İkili (Sıfır Olmayan Alt Tür) BinData(1, 'AQIDBA==')
map_value {
fields {
key: "__binary__"
value {
bytes_value: "<subtype + data>"
}
}
}
Verilerin başına alt tür baytı eklenir.
ObjectId ObjectId('67eea9446dc71ec469e9496a')
map_value {
fields {
key: "__oid__"
value {
string_value:
"67eea9446dc71ec469e9496a"
}
}
}
Küçük harfli onaltılık dize.
Zaman damgası (dahili) Timestamp(123, 1)
map_value {
fields {
key: "__request_timestamp__"
value {
map_value {
fields {
key: "seconds"
value {
integer_value: 123
}
}
fields {
key: "increment"
value {
integer_value: 1
}
}
}
}
}
}
MongoDB dahili zaman damgası.
Normal İfade RegExp('.*', 'im')
map_value {
fields {
key: "__regex__"
value {
map_value {
fields {
key: "pattern"
value {
string_value: ".*"
}
}
fields {
key: "options"
value {
string_value: "im"
}
}
}
}
}
}
Min Key MinKey()
map_value {
fields {
key: "__min__"
value {
null_value: NULL_VALUE
}
}
}
Maksimum Anahtar MaxKey()
map_value {
fields {
key: "__max__"
value {
null_value: NULL_VALUE
}
}
}
Decimal128 Decimal128('4E7')
map_value {
fields {
key: "__decimal128__"
value {
string_value: "4E7"
}
}
}

Cloud Firestore türleri yerel olarak BSON'da değil

Bu Cloud Firestore türleri, BSON'a dönüştürüldüğünde özel olarak yapılandırılmış haritalar olarak temsil edilir.

Cloud Firestore Türü BSON Cloud Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
Vektör
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
Belge Ref
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

Alan adları

MongoDB'deki __.*__ ile eşleşen alan adları, Cloud Firestore içinde depolanırken r: eklenerek kodlanır. Örneğin, bir BSON alanı __foo__, Cloud Firestore içinde __r:foo__ olur.

İstemci SDK'larındaki BSON veri türleri

Cloud Firestore istemci SDK'larını kullanırken 128 bit ondalık sayılar, normal ifadeler ve BSON zaman damgaları gibi BSON veri türlerini temsil etmek için özel SDK sınıflarını kullanabilirsiniz.

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
}
    

Sırada ne var?