Davranış farklılıkları

Bu sayfada, Cloud Firestore ile MongoDB arasındaki davranış farklılıkları açıklanmaktadır.

MongoDB sürümüne göre desteklenen özelliklerin dökümü için aşağıdaki kaynaklara bakın:

Bağlantılar ve veritabanları

  • Her bağlantı tek bir Cloud Firestore veritabanıyla sınırlıdır.
  • Bir veritabanına bağlanmadan önce veritabanı oluşturulmalıdır.

Adlandırma

Veri modelinizin bölümlerini adlandırma konusunda aşağıdaki farklılıklar geçerlidir.

Koleksiyonlar

  • __.*__ ile eşleşen koleksiyon adları desteklenmez.

Alanlar

  • __.*__ ile eşleşen alan adları desteklenmez.
  • Boş alan adları desteklenmez.

Dokümanlar

  • Maksimum belge boyutu 16 MiB'tir.
  • Alanların maksimum iç içe yerleştirme derinliği 20'dir. Dizi ve nesne türündeki her alan, genel derinliğe bir düzey ekler.
  • Eventarc etkinliklerinde, 10 MiB'tan büyük dokümanlar etkinlik yüküne dahil edilmez.

_id alanı

  • Üst düzey _id alanı ObjectId, String, 64 bit tam sayı, 32 bit tam sayı, Double, Binary veya Object olmalıdır. Diğer BSON türleri desteklenmez.

Değerler

  • JavaScript, Symbol, DBPointer ve Undefined BSON türleri desteklenmez.

Tarih

  • Tarih değerleri [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z] içinde olmalıdır.

Decimal128

  • NaN, pozitif sonsuz ve negatif sonsuz değerleri yazma sırasında kanonikleştirilir.
  • Decimal128 üzerinde aritmetik işlemler desteklenmez.

Çift

  • NaN değerleri yazma sırasında kanonikleştirilir.

Normal ifade

  • Normal ifade seçenekleri geçerli ("i", "m", "s", "u" veya "x") olmalı ve tekrarlanmadan alfabetik sırayla sağlanmalıdır.

Sorgular

  • Doğal sıralama düzeni (açık bir sıralama içermeyen sorgular), ekleme sırasıyla veya _id alanına göre artan düzende sıralamayla eşleşmiyor.

Toplamalar

  • Toplama işlemleri 250 aşamayla sınırlıdır.
  • $merge ve $out aşamaları desteklenmez. Desteklenen aşamaların ve operatörlerin tam listesi için komutlar bölümüne bakın.
  • $facet aşaması, değişken bir ifade olduğundan giriş aşamalarında $rand veya $sample'ı desteklemez.

Yazma işlemleri

  • Adı dolar işareti ("$") ile başlayan dokümanlar, update veya findAndModify'nin upsert özelliği kullanılarak oluşturulamaz.
  • Sürücünün bu özelliği kullanmaya çalışmadığından emin olmak için bağlantı dizenizin retryWrites=false içerdiğinden (veya sürücünüze uygun yöntemi kullandığınızdan) emin olun. Yeniden denenebilir yazma işlemleri desteklenmez.

İşlemler

  • Anlık görüntü yalıtımı ve serileştirilebilir işlemler desteklenir.

  • Varsayılan olarak, işlemler anlık görüntü yalıtımı ile iyimser eşzamanlılık kontrollerini kullanır.

Okunanlar endişesi

  • Cloud Firestore , snapshot, majority ve linearizable ile ilgili okuma sorunlarını destekler. Varsayılan değer, anlık görüntü yalıtımını ifade eden snapshot'dır.

    Uygulama sıkı tutarlılık gerektirdiğinde ve yazma çarpıklığı anomalilerini önlemesi gerektiğinde linearizable kullanın. Diğer iş yükleri için, snapshot performansı artırabilir ve işlem anlaşmazlığını azaltabilir.

Endişe verilerini yazma

  • Yalnızca w: 'majority' ve w: 1 yazma sorunları desteklenir.

Okuma tercihi

  • Yalnızca primary, primaryPreferred, primary_preferred, secondary_preferred ve nearest okuma sorunları desteklenir.

Dizinler

  • Joker karakter içeren dizinler desteklenmez.
  • Cloud Firestore, _id üzerinde otomatik olarak dizin oluşturmaz ancak _id değerlerinin bir koleksiyonda benzersiz olmasını sağlar.
  • Çoklu anahtar özelliği etkinleştirilmemiş dizinler, yazma işlemlerine göre otomatik olarak çoklu anahtar dizinlerine dönüştürülmez. Dizini oluştururken çoklu anahtarı etkinleştirmeniz gerekir ve bu seçenek değiştirilemez.

Hatalar

  • Hata kodları ve mesajları, Cloud Firestore ile MongoDB arasında farklılık gösterebilir.

Komutlar

Aşağıdaki davranış farklılıkları belirli komutlar için geçerlidir.

  • Aşağıdaki tablolarda listelenmeyen komutlar desteklenmez.
  • comment çoğu komut tarafından kabul edilir ancak yoksayılır.
  • maxTimeMS çoğu komut tarafından kabul edilir ancak yoksayılabilir.

Sorgular

ve yazma

Command Desteklenmeyen Alanlar

find

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

aggregate

  • collation
  • let

insert

(hiçbiri)

update

Güncelleme ifadesinde:

  • collation

delete

Silme ifadesinde:

  • collation

findAndModify

  • collation
  • let

count

  • collation

distinct

  • collation

getMore

  • comment

killCursors

(hiçbiri)

explain

(hiçbiri)

İşlemler

ve oturumlar

Command Desteklenmeyen Alanlar

commitTransaction

(hiçbiri)

abortTransaction

(hiçbiri)

endSessions

(hiçbiri)

Yönetim

Command Desteklenmeyen Alanlar Notlar

listDatabases

  • authorizedDatabases
filter sağlanırsa boş olmalıdır.

listCollections

(hiçbiri)

Sağlanırsa authorizedCollections değeri false olmalıdır.

listIndexes

(hiçbiri)

createIndexes

(hiçbiri)

dropIndexes

(hiçbiri)

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • encryptedFields
Bu komut, işlem yapmaz.

capped sağlanırsa yanlış olmalıdır.

drop

(hiçbiri)

Drop koleksiyonu sınırlamaları

Bir koleksiyonu bıraktığınızda aşağıdaki sınırlamalar geçerlidir:

  • Dizini yeniden oluşturma: Bir düşüşün hemen ardından aynı dizin yapılandırmasını oluşturamazsınız. Arka plan silme işleminin tamamlanmasını beklemeniz gerekir.
  • Boyut sınırı: Büyük koleksiyonların bırakılması bağlantı zaman aşımlarına neden olabilir. Zaman aşımı görüyorsanız bağlantı son tarihini uzatın. Alternatif olarak toplu silme özelliğini kullanabilirsiniz.
  • Etkinlikler: drop komutu kullanılırken Eventarc için bırakma toplama etkinlikleri oluşturulmaz.

Sırada ne var?