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 bölümleri inceleyin:

Bağlantılar ve veritabanları

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

Adlandırma

Veri modelinizin bölümlerini adlandırırken 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 doküman boyutu 16 MiB'dir.
  • Alanların maksimum iç içe yerleştirme derinliği 20'dir. Her dizi ve nesne türündeki alan, genel derinliğe bir seviye 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, dize, 64 bit tam sayı, 32 bit tam sayı, Double, ikili veya nesne 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] aralığında 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 tekrar olmadan alfabetik sırayla sağlanmalıdır.

Sorgular

  • Doğal sıralama ölçütü (açık bir sıralama içermeyen sorgular), kampanya siparişi veya _id artan düzende sıralama ölçütüyle eşleşmiyor.

Toplamalar

  • Toplu işlemler 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ı, geçici bir ifade olduğu için giriş aşamalarında $rand veya $sample ifadesini desteklemez.

Yazma işlemleri

  • Adları 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 emin olun (veya sürücünüze uygun yöntemi kullanın). 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ıyla iyimser eşzamanlılık kontrollerini kullanır.

Endişeyi okuma

  • 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 değeridir.

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

Endişenizi yazın

  • Yalnızca w: 'majority' ve w: 1 yazma endişeleri desteklenir.

Okuma tercihi

  • Yalnızca primary, primaryPreferred, primary_preferred, secondary_preferred ve nearest okuma endişeleri desteklenir.

Dizinler

  • Joker karakter dizinleri desteklenmez.
  • Cloud Firestore, _id üzerinde otomatik olarak dizin oluşturmaz ancak _id değerlerinin bir koleksiyon içinde benzersiz olmasını sağlar. Benzer bir sıralama davranışı elde etmek için _id alanında açıkça sıralı bir dizin oluşturmanız gerekir. Ancak özellikle _id değerleriniz monoton bir şekilde artıyor veya azalıyorsa (ör.zaman damgaları) olası hotspot sorunlarına dikkat edin. Bu durum, ölçeklendirme performansını etkileyebilir.
  • Çoklu anahtar etkinleştirilmemiş dizinler, yazma işlemlerine göre otomatik olarak çoklu anahtar dizinleri olarak değiştirilmez. Dizini oluştururken çoklu anahtarı etkinleştirmeniz gerekir. 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 yazar

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

Bir 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)

authorizedCollections sağlanırsa yanlış 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.

Sağlanmışsa capped değeri false olmalıdır.

drop

(hiçbiri)

Koleksiyon sınırlamalarını kaldırma

Bir koleksiyonu sildiğinizde aşağıdaki sınırlamalar geçerli olur:

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

Sırada ne var?