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 4 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.

_id

  • Ü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.
  • $lookup aşamasında let ve pipeline alanları desteklenmez.
  • $facet aşaması, değişken bir ifade olduğundan giriş aşamalarında $rand ifadesini 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.

  • İşlemler varsayılan olarak anlık görüntü izolasyonu ile iyimser eşzamanlılık kontrollerini kullanır.

Endişe verilerini okuma

  • Cloud Firestore , snapshot, majority ve linearizable okuma endişelerini destekler. Varsayılan değer, anlık görüntü izolasyonunu 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 endişeleri 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.
  • Çok anahtarlı özelliği etkinleştirilmemiş dizinler, yazma işlemlerine göre otomatik olarak çok anahtarlı dizinlere 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 işlemleri

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.

Sırada ne var?