Sự khác biệt về hành vi

Chỉ áp dụng cho phiên bản Cloud Firestore Enterprise.

Trang này mô tả những điểm khác biệt về hành vi giữa Cloud Firestore có khả năng tương thích với MongoDB và MongoDB.

Để biết thông tin chi tiết về các tính năng được hỗ trợ tuỳ thuộc vào phiên bản MongoDB, hãy xem:

Kết nối và cơ sở dữ liệu

  • Mỗi kết nối chỉ được giới hạn ở một Cloud Firestore có cơ sở dữ liệu tương thích với MongoDB.
  • 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

Những điểm khác biệt sau đây áp dụng cho việc đặt tên các phần trong mô hình dữ liệu.

Bộ sưu tập

  • Tên bộ sưu tập khớp với __.*__ không được hỗ trợ.

Trường

  • Tên trường khớp với __.*__ không được hỗ trợ.
  • Không hỗ trợ tên trường trống.

Tài liệu

  • Kích thước tối đa của tài liệu là 4 MiB.
  • Độ sâu lồng ghép tối đa của các trường là 20. Mỗi trường có kiểu Array và Object sẽ thêm một cấp vào độ sâu tổng thể.

_id

  • Tài liệu _id (trường cấp cao nhất) phải là ObjectId, String hoặc số nguyên 64 bit. Các loại BSON khác không được hỗ trợ.
  • Không hỗ trợ chuỗi trống ("") và 0 (0L) 64 bit.

Giá trị

  • Các loại JavaScript, Symbol, DBPointer và Undefined BSON 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

  • NaN, giá trị vô cực dương và vô cực âm đượ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

  • Các giá trị NaN được chuẩn hoá khi ghi.

Cụm từ thông dụng

  • Các lựa 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 có nội dung 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ó tiêu chí sắp xếp rõ ràng) không khớp với thứ tự chèn hoặc thứ tự sắp xếp theo _id tăng dần.

Tổng hợp

  • Số lượng giai đoạn tổng hợp tối đa là 250.
  • Không hỗ trợ các giai đoạn $merge$out. 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 $lookup chỉ giới hạn ở việc chỉ định một foreignField trên _id.

Hoạt động ghi

  • Bạn không thể tạo tài liệu có tên bắt đầu bằng dấu đô la ("$") bằng tính năng chèn và cập nhật của update hoặc findAndModify.
  • Đả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ợ các thao tác ghi có thể thử lại.

Giao dịch

  • Có hỗ trợ cô lập ảnh chụp nhanh và giao dịch có thể chuyển đổi tuần tự.

  • Theo mặc định, các giao dịch sử dụng cơ chế kiểm soát đồng thời lạc quan với tính năng cách ly ảnh chụp nhanh.

Đọc dữ liệu về mối lo ngại

  • Cloud Firestore có khả năng tương thích với MongoDB và hỗ trợ các mối lo ngại về việc đọc snapshot, majoritylinearizable. Giá trị mặc định là snapshot, đề cập đến tính năng cách ly ảnh chụp nhanh.

    Sử dụng linearizable khi ứ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, snapshot có thể cải thiện hiệu suất và giảm tình trạng tranh chấp giao dịch.

Mối lo ngại về việc ghi

  • Chỉ hỗ trợ các mối lo ngại khi ghi w: 'majority'w: 1.

Lựa chọn ưu tiên khi đọc

  • Chỉ các mối lo ngại khi đọc primary, primaryPreferred, primary_preferred, secondary_preferrednearest được hỗ trợ.

Chỉ số

  • Không hỗ trợ chỉ mục có ký tự đại diện.
  • Cloud Firestore có khả năng tương thích với MongoDB không tự động tạo chỉ mục trên _id, nhưng đảm bảo các giá trị của _id là duy nhất trong một tập hợp.
  • 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 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 có khả năng tương thích với MongoDB 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 các bảng sau đây sẽ không được hỗ trợ.
  • Hầu hết các lệnh đều chấp nhận maxTimeMS nhưng có thể bỏ qua.

Truy vấn và hoạt động ghi

Lệnh Các trường không được hỗ trợ

find

  • comment
  • readConcern
  • max
  • min
  • returnKey
  • showRecordId
  • tailable
  • oplogReplay
  • noCursorTimeout
  • awaitData
  • allowPartialResults
  • collation
  • allowDiskUsage
  • let

aggregate

  • bypassDocumentValidation
  • readConcern
  • collation
  • hint
  • comment
  • let

insert

  • bypassDocumentValidation
  • comment

update

  • collation
  • arrayFilters
  • hint

delete

  • comment
  • write

Trong câu lệnh xoá:

  • collation
  • hint

findAndModify

  • fields
  • bypassDocumentValidation
  • collation
  • arrayFilters
  • hint
  • comment
  • let

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(không có)

Giao dịch và phiên hoạt động

Lệnh Các trường không được hỗ trợ

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(không có)

Quản trị

Lệnh Các trường không được hỗ trợ Ghi chú

listDatabases

  • authorizedDatabases
  • comment
filter phải để trống nếu bạn cung cấp.

listCollections

  • comment
authorizedCollections phải là false nếu được cung cấp.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Lệnh này không có tác dụng.

capped phải là false nếu được cung cấp.

Bước tiếp theo