Perbedaan perilaku

Hanya relevan dengan edisi Cloud Firestore Enterprise.

Halaman ini menjelaskan perbedaan perilaku antara Cloud Firestore dengan kompatibilitas MongoDB dan MongoDB.

Untuk mengetahui perincian fitur yang didukung bergantung pada versi MongoDB, lihat:

Koneksi dan database

  • Setiap koneksi dibatasi untuk satu database Cloud Firestore dengan kompatibilitas MongoDB.
  • Database harus dibuat sebelum terhubung ke database tersebut.

Penamaan

Perbedaan berikut berlaku untuk penamaan bagian model data Anda.

Koleksi

  • Nama koleksi yang cocok dengan __.*__ tidak didukung.

Kolom

  • Nama kolom yang cocok dengan __.*__ tidak didukung.
  • Nama kolom kosong tidak didukung.

Dokumen

  • Ukuran dokumen maksimum adalah 4 MiB.
  • Kedalaman bertingkat maksimum kolom adalah 20. Setiap kolom berjenis Array dan Objek menambahkan satu tingkat ke kedalaman keseluruhan.

_id

  • Dokumen _id (kolom tingkat teratas) harus berupa ObjectId, String, atau bilangan bulat 64-bit. Jenis BSON lainnya tidak didukung.
  • String kosong ("") dan 0 64-bit (0L) tidak didukung.

Nilai

  • Jenis BSON JavaScript, Symbol, DBPointer, dan Undefined tidak didukung.

Tanggal

  • Nilai tanggal harus berada dalam rentang [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].

Decimal128

  • Nilai NaN, tak terhingga positif, dan tak terhingga negatif dikanonisasi saat penulisan.
  • Operasi aritmatika pada Decimal128 tidak didukung.

Ganda

  • Nilai NaN dikanonisasi saat penulisan.

Ekspresi reguler

  • Opsi ekspresi reguler harus valid ("i", "m", "s", "u", atau "x") dan diberikan dalam urutan abjad tanpa pengulangan.

Kueri

  • Urutan pengurutan alami (kueri tanpa pengurutan eksplisit) tidak cocok dengan urutan penyisipan atau urutan berdasarkan _id menaik.

Agregasi

  • Agregasi dibatasi hingga 250 tahap.
  • Tahap $merge dan $out tidak didukung. Lihat bagian perintah untuk mengetahui daftar lengkap operator dan tahap yang didukung.
  • Tahap $lookup terbatas pada penentuan foreignField di _id.

Tulis

  • Dokumen dengan nama yang diawali dengan tanda dolar ("$") tidak dapat dibuat menggunakan fitur upsert update atau findAndModify.
  • Pastikan string koneksi Anda mencakup retryWrites=false (atau gunakan metode yang sesuai untuk driver Anda) untuk memastikan driver tidak mencoba menggunakan fitur ini. Penulisan yang dapat dicoba lagi tidak didukung.

Transaksi

  • Snapshot isolation dan transaksi yang dapat diserialisasi didukung.

  • Secara default, transaksi menggunakan kontrol konkurensi optimis dengan isolasi snapshot.

Baca masalah

  • Cloud Firestore dengan kompatibilitas MongoDB mendukung snapshot , majority, dan linearizable masalah pembacaan. Defaultnya adalah snapshot yang merujuk pada isolasi snapshot.

    Gunakan linearizable jika aplikasi memerlukan konsistensi yang ketat dan harus mencegah anomali penulisan miring. Untuk workload lain, snapshot dapat meningkatkan performa dan mengurangi pertentangan transaksi.

Menulis kekhawatiran

  • Hanya masalah penulisan w: 'majority' dan w: 1 yang didukung.

Membaca preferensi

  • Hanya masalah pembacaan primary, primaryPreferred, primary_preferred, secondary_preferred, dan nearest yang didukung.

Indeks

  • Indeks karakter pengganti tidak didukung.
  • Cloud Firestore dengan kompatibilitas MongoDB tidak otomatis membuat indeks pada _id, tetapi memastikan nilai _id unik dalam koleksi.
  • Indeks tanpa mengaktifkan multi-kunci tidak otomatis diubah menjadi indeks multi-kunci berdasarkan operasi tulis. Anda harus mengaktifkan multi-kunci saat membuat indeks dan opsi ini tidak dapat diubah.

Error

  • Kode dan pesan error dapat berbeda antara Cloud Firestore dengan kompatibilitas MongoDB dan MongoDB.

Perintah

Perbedaan perilaku berikut berlaku untuk perintah tertentu.

  • Perintah yang tidak tercantum dalam tabel berikut tidak didukung.
  • maxTimeMS diterima oleh sebagian besar perintah, tetapi mungkin diabaikan.

Kueri dan penulisan

Perintah Kolom yang Tidak Didukung

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

Dalam pernyataan penghapusan:

  • collation
  • hint

findAndModify

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

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(tidak ada)

Transaksi dan sesi

Perintah Kolom yang Tidak Didukung

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(tidak ada)

Administrasi

Perintah Kolom yang Tidak Didukung Catatan

listDatabases

  • authorizedDatabases
  • comment
filter harus kosong jika diberikan.

listCollections

  • comment
authorizedCollections harus salah jika diberikan.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Perintah ini adalah no-op.

capped harus bernilai salah (false) jika diberikan.

Langkah berikutnya