Các loại dữ liệu và trình điều khiển MongoDB được hỗ trợ

Bảng sau đây liệt kê các loại dữ liệu, trình điều khiển và công cụ của bên thứ ba được hỗ trợ cho MongoDB trong Cloud Firestore.

Loại dữ liệu

Loại BSON Được hỗ trợ
Số nguyên 32 bit Có
Số nguyên 64 bit Có
Hàm TOCOL Có
Dữ liệu nhị phân Có
Boolean Có
Ngày Có
DBPointer Không
Decimal128 Có
Giường đôi Có
JavaScript Không
JavaScript (có phạm vi) Không
MaxKey Có
MinKey Có
Null Có
Đối tượng Có
ObjectId Có
Cụm từ thông dụng Có
Chuỗi Có
Biểu tượng Không
Dấu thời gian Có
Không xác định Không

Tài liệu _id

Trường _id cấp cao nhất trong tài liệu phải thuộc một trong các loại sau:

  • ObjectId
  • Chuỗi
  • Số nguyên 64 bit
  • Số nguyên 32 bit
  • Giường đôi
  • Tệp nhị phân
  • Đối tượng
  • Boolean

Tổng kích thước của _id không được vượt quá 1.500 byte.

Mỗi giá trị trong một mã nhận dạng thuộc loại Đối tượng cũng phải thuộc loại mã nhận dạng được hỗ trợ hoặc một Mảng giá trị, trong đó mỗi giá trị thuộc loại mã nhận dạng được hỗ trợ.

Các loại BSON khác không được hỗ trợ.

Ngôn ngữ và trình điều khiển MongoDB

Cloud Firestore hỗ trợ các phiên bản trình điều khiển sau:

Ngôn ngữ Phiên bản trình điều khiển
Java 5.x
Node.js 6.x
5.x
Python 4.x
3.x (x ≥ 12)
Bắt đầu 2.x
C# 3.x
Ruby 2.x (x ≥ 16)

Hỗ trợ xác thực OIDC

Trình điều khiển Go, C# và Ruby hỗ trợ xác thực OpenID Connect (OIDC) từ Google Cloud cho tất cả các phiên bản trình điều khiển được hỗ trợ.

Trình điều khiển Java, Node.js và Python hỗ trợ phương thức xác thực OIDC từ Google Cloud, bắt đầu từ các phiên bản trình điều khiển sau:

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

Các công cụ của bên thứ ba

Cloud Firestore hỗ trợ các công cụ của bên thứ ba được mô tả trong phần này.

Công cụ Nội dung mô tả Ghi chú
mongoimport Công cụ cơ sở dữ liệu MongoDB Xem phần Tải dữ liệu hàng loạt
mongoexport Công cụ cơ sở dữ liệu MongoDB
mongodump Công cụ cơ sở dữ liệu MongoDB
mongorestore Công cụ cơ sở dữ liệu MongoDB Xem phần Tải dữ liệu hàng loạt
mongosh MongoDB Shell
Mongoose Công cụ lập mô hình đối tượng MongoDB
MongoDB Compass Công cụ GUI để khám phá dữ liệu

Khả năng tương thích của loại BSON và Cloud Firestore

Phần này tóm tắt mối liên kết giữa các loại BSON MongoDB và giá trị Cloud Firestore. Vì BSON là định dạng nhị phân và API Cloud Firestore sử dụng Vùng đệm giao thức, nên một số loại sẽ liên kết trực tiếp, trong khi một số loại khác yêu cầu biểu diễn liên kết đặc biệt.

Tổng quan về mối liên kết

Các bảng sau đây cho biết cách các kiểu dữ liệu BSON tương ứng với các bản trình bày vùng đệm giao thức Cloud Firestore.

Liên kết trực tiếp

Các loại này có giá trị tương đương trực tiếp trong cả hai hệ thống.

Loại BSON BSON Cloud Firestore Proto Ghi chú
Double 1.23 double_value: 1.23
String "hello" string_value: "hello"
Đối tượng
{
"a": 1.23
}
map_value {
fields {
key: "a"
value {
double_value: 1.23
}
}
}
Mảng
[
1.23,
"a"
]
array_value {
values {
double_value: 1.23
}
values {
string_value: "a"
}
}
Nhị phân (Loại phụ 0) BinData(0, 'SGVsbG8=') bytes_value: "Hello"
Boolean true boolean_value: true
Null null null_value: NULL_VALUE
Số nguyên 64 bit Long('1234567890') integer_value: 1234567890
Ngày ISODate('2026-05-22T04:00:00Z')
timestamp_value {
seconds: 1779470400
nanos: 0
}
Giá trị dấu thời gian Cloud Firestore được lưu trữ ở độ chính xác đến micrô giây, nhưng mọi giá trị vượt quá độ chính xác đến mili giây đều bị mất khi chuyển đổi sang BSON.

Các loại BSON được biểu thị dưới dạng bản đồ trong API Cloud Firestore

Các loại BSON này được gói trong Cloud Firestore map_value bằng các khoá đặc biệt để biểu thị loại.

Loại BSON BSON Cloud Firestore Proto Ghi chú
Số nguyên 32 bit 123
map_value {
fields {
key: "__int__"
value {
integer_value: 123
}
}
}
Nhị phân (Loại phụ khác 0) BinData(1, 'AQIDBA==')
map_value {
fields {
key: "__binary__"
value {
bytes_value: "<subtype + data>"
}
}
}
Byte loại phụ được thêm vào trước dữ liệu.
ObjectId ObjectId('67eea9446dc71ec469e9496a')
map_value {
fields {
key: "__oid__"
value {
string_value:
"67eea9446dc71ec469e9496a"
}
}
}
Chuỗi thập lục phân viết thường.
Dấu thời gian (Nội bộ) 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
}
}
}
}
}
}
Dấu thời gian nội bộ của MongoDB.
Biểu thức chính quy RegExp('.*', 'im')
map_value {
fields {
key: "__regex__"
value {
map_value {
fields {
key: "pattern"
value {
string_value: ".*"
}
}
fields {
key: "options"
value {
string_value: "im"
}
}
}
}
}
}
Khoá tối thiểu MinKey()
map_value {
fields {
key: "__min__"
value {
null_value: NULL_VALUE
}
}
}
Khoá tối đa 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 loại không có sẵn trong BSON

Các loại Cloud Firestore này được biểu thị dưới dạng bản đồ có cấu trúc đặc biệt khi được chuyển đổi thành BSON.

Loại Cloud Firestore BSON Cloud Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
Vector
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
Tham chiếu tài liệu
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

Tên trường

Tên trường từ MongoDB khớp với __.*__ sẽ được thoát bằng cách kết hợp r: khi lưu trữ trong Cloud Firestore. Ví dụ: trường BSON __foo__ trở thành __r:foo__ trong Cloud Firestore.

Các loại dữ liệu BSON trong SDK ứng dụng

Khi sử dụng SDK ứng dụng Cloud Firestore, bạn có thể dùng các lớp SDK chuyên biệt để biểu thị các loại dữ liệu BSON như số thập phân 128 bit, biểu thức chính quy và dấu thời gian 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);
    
Bắt đầu
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
}
    

Bước tiếp theo