Perbedaan perilaku

Halaman ini menjelaskan perbedaan perilaku antara 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 Firestore dengan database 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 nesting maksimum kolom adalah 20. Setiap kolom berjenis Array dan Objek menambahkan satu tingkat ke kedalaman keseluruhan.

_id

  • _id Dokumen (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 JavaScript, Symbol, DBPointer, dan Undefined BSON tidak didukung.

Tanggal

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

Decimal128

  • Nilai NaN, tak terbatas positif, dan tak terbatas negatif akan dikanonikasikan saat ditulis.
  • Operasi aritmetika pada Decimal128 tidak didukung.

Ganda

  • Nilai NaN dikanonikasikan saat penulisan.

Ekspresi reguler

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

Kueri

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

Agregasi

  • Agregasi dibatasi hingga 250 tahap.
  • Tahap $merge dan $out tidak didukung. Lihat bagian perintah untuk mengetahui daftar lengkap tahap dan operator yang didukung.

Tulis

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

Transaksi

  • Transaksi snapshot tidak didukung.
  • Transaksi menggunakan kontrol serentak pesimis dengan penguncian. Untuk menghindari persaingan kunci, batasi jumlah data yang dibaca dalam transaksi.

Indeks

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

Membaca masalah

  • Hanya tingkat masalah baca majority yang didukung.

Menulis masalah

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

Preferensi baca

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

Error

  • Kode dan pesan error dapat berbeda antara 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 dapat diabaikan.

Kueri dan operasi tulis

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 tidak melakukan apa pun.

capped harus salah jika diberikan.

Langkah berikutnya