Trang này mô tả sự khác biệt về hành vi giữa Cloud Firestore và MongoDB.
Để biết thông tin chi tiết về các tính năng được hỗ trợ tuỳ theo phiên bản MongoDB, hãy xem:
- Các tính năng được hỗ trợ: 8.0
- Các tính năng được hỗ trợ: 7.0
- Các tính năng được hỗ trợ: 6.0
- Các tính năng được hỗ trợ: 5.0
Kết nối và cơ sở dữ liệu
- Mỗi kết nối chỉ được liên kết với một cơ sở dữ liệu Cloud Firestore.
- Bạn phải tạo cơ sở dữ liệu trước khi kết nối với cơ sở dữ liệu đó.
Đặt tên
Sau đây là những điểm khác biệt khi đặt tên cho các phần trong mô hình dữ liệu.
Bộ sưu tập
- Không hỗ trợ tên bộ sưu tập khớp với
__.*__.
Trường
- Không hỗ trợ tên trường khớp với
__.*__. - Không hỗ trợ tên trường trống.
Tài liệu
- Kích thước tài liệu tối đa là 16 MiB.
- Độ sâu lồng tối đa của các trường là 20. Mỗi trường thuộc loại Mảng và Đối tượng sẽ thêm một cấp vào độ sâu tổng thể.
- Trong các sự kiện Eventarc, tài liệu lớn hơn 10 MiB sẽ không được đưa vào tải trọng sự kiện.
_id trường
- Trường
_idcấp cao nhất phải là ObjectId, Chuỗi, số nguyên 64 bit, số nguyên 32 bit, Double, Binary hoặc Object. Các loại BSON khác không được hỗ trợ.
Giá trị
- Các loại BSON JavaScript, Symbol, DBPointer và Undefined không được hỗ trợ.
Ngày
- Giá trị ngày phải nằm trong
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].
Decimal128
- Giá trị
NaN, giá trị dương vô cực và giá trị âm vô cực được chuẩn hoá khi ghi. - Không hỗ trợ các phép toán số học trên Decimal128.
Giường đôi
- Giá trị
NaNđược chuẩn hoá khi ghi.
Biểu thức chính quy
- Các tuỳ chọn biểu thức chính quy phải hợp lệ ("i", "m", "s", "u" hoặc "x") và được cung cấp theo thứ tự bảng chữ cái mà không lặp lại.
Cụm từ tìm kiếm
- Thứ tự sắp xếp tự nhiên (các truy vấn không có thứ tự sắp xếp rõ ràng) không khớp với thứ tự chèn hoặc thứ tự tăng dần theo
_id.
Tổng hợp
- Các phép tổng hợp chỉ được có tối đa 250 giai đoạn.
- Các giai đoạn
$mergevà$outkhông được hỗ trợ. Hãy xem phần lệnh để biết danh sách đầy đủ các giai đoạn và toán tử được hỗ trợ. - Giai đoạn
$facetkhông hỗ trợ$randhoặc$sampletrong các giai đoạn đầu vào vì đây là biểu thức không ổn định.
Hoạt động ghi
- Bạn không thể tạo tài liệu có tên bắt đầu bằng ký hiệu đô la ("$") bằng tính năng upsert của
updatehoặcfindAndModify. - Đảm bảo chuỗi kết nối của bạn
bao gồm
retryWrites=false(hoặc sử dụng phương thức phù hợp với trình điều khiển của bạn) để đảm bảo trình điều khiển không cố gắng sử dụng tính năng này. Không hỗ trợ thao tác ghi có thể thử lại.
Giao dịch
Hỗ trợ mức cô lập snapshot và giao dịch có thể tuần tự hoá.
Theo mặc định, các giao dịch sử dụng chế độ kiểm soát đồng thời lạc quan với tính năng cô lập ảnh chụp nhanh.
Đọc dữ liệu về mối lo ngại
Cloud Firestore hỗ trợ các mối lo ngại về việc đọc
snapshot,majorityvàlinearizable. Giá trị mặc định làsnapshot, tức là cô lập snapshot.Sử dụng
linearizablekhi ứng dụng yêu cầu tính nhất quán nghiêm ngặt và phải ngăn chặn các điểm bất thường về độ lệch ghi. Đối với các khối lượng công việc khác,snapshotcó thể cải thiện hiệu suất và giảm tranh chấp giao dịch.
Ghi dữ liệu về mối lo ngại
- Chỉ hỗ trợ các mối lo ngại về việc ghi
w: 'majority'vàw: 1.
Lựa chọn ưu tiên về chế độ đọc
- Chỉ hỗ trợ các mối lo ngại về việc đọc
primary,primaryPreferred,primary_preferred,secondary_preferredvànearest.
Chỉ số
- Không hỗ trợ chỉ mục ký tự đại diện.
- Cloud Firestore không tự động tạo chỉ mục trên
_id, nhưng đảm bảo các giá trị của_idlà duy nhất trong một tập hợp. Để đạt được hành vi sắp xếp tương tự, bạn cần tạo rõ ràng một chỉ mục có thứ tự trên trường_id. Tuy nhiên, hãy lưu ý đến các vấn đề tiềm ẩn về điểm phát sóng, đặc biệt là nếu các giá trị_idcủa bạn tăng hoặc giảm đơn điệu (ví dụ: dấu thời gian), vì điều này có thể ảnh hưởng đến hiệu suất trên quy mô lớn. - Các chỉ mục không bật nhiều khoá sẽ không tự động thay đổi thành chỉ mục nhiều khoá dựa trên các thao tác ghi. Bạn phải bật tính năng nhiều khoá khi tạo chỉ mục và không thể thay đổi lựa chọn này.
Lỗi
- Mã lỗi và thông báo lỗi có thể khác nhau giữa Cloud Firestore và MongoDB.
Lệnh
Những điểm khác biệt sau đây về hành vi áp dụng cho các lệnh cụ thể.
- Các lệnh không có trong bảng sau đây sẽ không được hỗ trợ.
commentđược hầu hết các lệnh chấp nhận nhưng bị bỏ qua.- Hầu hết các lệnh đều chấp nhận
maxTimeMSnhưng có thể bị bỏ qua.
Cụm từ tìm kiếm
và ghi
| Command | Trường không được hỗ trợ |
|---|---|
|
|
|
|
|
|
|
|
(không có) |
|
|
Trong câu lệnh cập nhật:
|
|
|
Trong câu lệnh xoá:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(không có) |
|
|
(không có) |
Giao dịch
và phiên hoạt động
| Command | Trường không được hỗ trợ |
|---|---|
|
|
(không có) |
|
|
(không có) |
|
|
(không có) |
Quản trị
| Command | Trường không được hỗ trợ | Ghi chú |
|---|---|---|
|
|
|
filter phải để trống nếu được cung cấp. |
|
|
(không có) |
authorizedCollections phải là false nếu được cung cấp. |
|
|
(không có) |
|
|
|
(không có) |
|
|
|
(không có) |
|
|
|
|
Lệnh này không hoạt động.capped phải là false nếu được cung cấp.
|
|
|
(không có) |
Giới hạn về việc bỏ bộ sưu tập
Các giới hạn sau đây sẽ áp dụng khi bạn loại bỏ một tập hợp:
- Tạo lại chỉ mục: Bạn không thể tạo cùng một cấu hình chỉ mục ngay sau khi xoá. Bạn phải đợi quá trình xoá trong nền hoàn tất.
- Giới hạn kích thước: Việc xoá các tập hợp lớn có thể dẫn đến tình trạng hết thời gian kết nối. Tăng thời hạn kết nối nếu bạn thấy hết thời gian chờ. Bạn có thể sử dụng tính năng xoá hàng loạt để thay thế.
- Sự kiện: Sự kiện thu thập dữ liệu bị loại bỏ không được tạo cho Eventarc khi
sử dụng lệnh
drop.
Bước tiếp theo
- Chạy Bắt đầu nhanh: Tạo cơ sở dữ liệu và kết nối với cơ sở dữ liệu đó.
- Để xem danh sách đầy đủ các tính năng được hỗ trợ, hãy xem bài viết Các loại dữ liệu, trình điều khiển và tính năng được hỗ trợ của MongoDB.