Davranış farklılıkları

Yalnızca Cloud Firestore Enterprise sürümü için geçerlidir.

Bu sayfada, MongoDB uyumlu 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ı, MongoDB uyumluluğu olan 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

  • Belge _id (üst düzey alan) bir ObjectId, String veya 64 bit tamsayı olmalıdır. Diğer BSON türleri desteklenmez.
  • Boş dize ("") ve 64 bit 0 (0L) 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 standartlaştırılır.
  • Decimal128 üzerinde aritmetik işlemler desteklenmez.

Çift

  • NaN değerleri yazma sırasında standartlaştırılır.

Normal ifade

  • Normal ifade seçenekleri geçerli olmalı ("i", "m", "s", "u" veya "x") 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ı, _id üzerinde foreignField belirtmekle sınırlıdır.

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ü izolasyonu ile iyimser eşzamanlılık kontrollerini kullanır.

Endişeyi okuma

  • MongoDB uyumluluğu olan Cloud Firestore , snapshot, majority ve linearizable okuma endişelerini 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ırılabilir ve işlem anlaşmazlığı azaltılabilir.

Yazma endişesi

  • 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.
  • MongoDB uyumlu 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ı, MongoDB uyumluluğu olan 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.
  • maxTimeMS çoğu komut tarafından kabul edilir ancak yoksayılabilir.

Sorgular ve yazma işlemleri

Command Desteklenmeyen Alanlar

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

Silme ifadesinde:

  • collation
  • hint

findAndModify

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

count

  • hint
  • readConcern
  • collation
  • comment

distinct

  • readConcern
  • collation
  • comment
  • hint

getMore

  • comment

killCursors

(hiçbiri)

İşlemler ve oturumlar

Command Desteklenmeyen Alanlar

commitTransaction

  • comment

abortTransaction

  • comment

endSessions

(hiçbiri)

Yönetim

Command Desteklenmeyen Alanlar Notlar

listDatabases

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

listCollections

  • comment
authorizedCollections sağlanıyorsa false olmalıdır.

listIndexes

  • comment

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • writeConcern
  • encryptedFields
  • comment
Bu komut etkisizdir.

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

Sırada ne var?