MongoDB için Azure Cosmos DB (4.0 sunucu sürümü): desteklenen özellikler ve söz dizimi
Makale
ŞUNLAR IÇIN GEÇERLIDIR: MongoDB
Azure Cosmos DB, Microsoft'un genel olarak dağıtılmış çok modelli veritabanı hizmetidir. Açık kaynak MongoDB istemci sürücülerinden herhangi birini kullanarak MongoDB için Azure Cosmos DB ile iletişim kurabilirsiniz. MongoDB için Azure Cosmos DB, MongoDB kablo protokolüne bağlı kalarak mevcut istemci sürücülerinin kullanılmasını sağlar.
MongoDB için Azure Cosmos DB'yi kullanarak, Azure Cosmos DB'nin sağladığı tüm kurumsal özelliklerle alışkın olduğunuz MongoDB'nin avantajlarından yararlanabilirsiniz: genel dağıtım, otomatik parçalama, kullanılabilirlik ve gecikme garantisi, bekleyen şifreleme, yedeklemeler ve çok daha fazlası.
Protokol Desteği
Desteklenen işleçler ve tüm sınırlamalar veya özel durumlar aşağıda listelenmiştir. Bu protokolleri anlayan herhangi bir istemci sürücüsünün MongoDB için Azure Cosmos DB'ye bağlanabilmesi gerekir. MongoDB hesapları için Azure Cosmos DB oluşturduğunuzda, hesapların 3.6+ sürümlerinde uç nokta biçimindeyken *.mongo.cosmos.azure.com hesapların 3.2 sürümünde uç nokta biçimindedir *.documents.azure.com.
Not
Bu makalede yalnızca desteklenen sunucu komutları listelenir ve istemci tarafı sarmalayıcı işlevleri hariç tutulur. ve gibi deleteMany() istemci tarafı sarmalayıcı işlevleri ve updateMany()update() sunucu komutlarını dahili olarak kullanırdelete(). Desteklenen sunucu komutlarını kullanan işlevler MongoDB için Azure Cosmos DB ile uyumludur.
Sorgu dili desteği
MongoDB için Azure Cosmos DB, MongoDB sorgu dili yapıları için kapsamlı destek sağlar. Şu anda desteklenen işlemlerin, işleçlerin, aşamaların, komutların ve seçeneklerin ayrıntılı listesini aşağıda bulabilirsiniz.
Veritabanı komutları
MongoDB için Azure Cosmos DB aşağıdaki veritabanı komutlarını destekler:
$lookup henüz sunucu sürümü 3.6'da tanıtılan bağıntısız alt sorgular özelliğini desteklemez. ve pipeline alanlarıyla işlecini kullanmayı $lookup denerseniz içeren bir iletiyle let is not supported birlikte let bir hata alırsınız.
Mantıksal ifadeler
Komut
Destekleniyor
and
Yes
not
Yes
or
Yes
Dönüştürme ifadeleri
Komut
Destekleniyor
convert
Yes
toBool
Yes
toDate
Yes
toDecimal
Yes
toDouble
Yes
toInt
Yes
toLong
Yes
toObjectId
Yes
toString
Yes
Küme ifadeleri
Komut
Destekleniyor
setEquals
Yes
setIntersection
Yes
setUnion
Yes
setDifference
Yes
setIsSubset
Yes
anyElementTrue
Yes
allElementsTrue
Yes
Karşılaştırma ifadeleri
Not
MongoDB IÇIN API, sorguda dizi değişmez değeriyle karşılaştırma ifadelerini desteklemez.
Komut
Destekleniyor
cmp
Yes
eq
Yes
gt
Yes
gte
Yes
lt
Yes
lte
Yes
ne
Yes
in
Yes
nin
Yes
Aritmetik ifadeler
Komut
Destekleniyor
abs
Yes
add
Yes
ceil
Yes
divide
Yes
exp
Yes
floor
Yes
ln
Yes
log
Yes
log10
Yes
mod
Yes
multiply
Yes
pow
Yes
sqrt
Yes
subtract
Yes
trunc
Yes
Dize ifadeleri
Komut
Destekleniyor
concat
Yes
indexOfBytes
Yes
indexOfCP
Yes
ltrim
Yes
rtrim
Yes
trim
Yes
split
Yes
strLenBytes
Yes
strLenCP
Yes
strcasecmp
Yes
substr
Yes
substrBytes
Yes
substrCP
Yes
toLower
Yes
toUpper
Yes
Metin arama işleci
Komut
Destekleniyor
meta
Hayır
Dizi ifadeleri
Komut
Destekleniyor
arrayElemAt
Yes
arrayToObject
Yes
concatArrays
Yes
filter
Yes
indexOfArray
Yes
isArray
Yes
objectToArray
Yes
range
Yes
reverseArray
Yes
reduce
Yes
size
Yes
slice
Yes
zip
Yes
in
Yes
Değişken işleçleri
Komut
Desteklenir
map
Yes
let
Yes
Sistem değişkenleri
Komut
Desteklenir
$$CURRENT
Yes
$$DESCEND
Yes
$$KEEP
Yes
$$PRUNE
Yes
$$REMOVE
Yes
$$ROOT
Yes
Değişmez değer işleci
Komut
Destekleniyor
literal
Yes
Tarih ifadeleri
Komut
Destekleniyor
dayOfYear
Yes
dayOfMonth
Yes
dayOfWeek
Yes
year
Yes
month
Yes
week
Yes
hour
Yes
minute
Yes
second
Yes
millisecond
Yes
dateToString
Yes
isoDayOfWeek
Yes
isoWeek
Yes
dateFromParts
Yes
dateToParts
Yes
dateFromString
Yes
isoWeekYear
Yes
Koşullu ifadeler
Komut
Destekleniyor
cond
Yes
ifNull
Yes
switch
Yes
Veri türü işleci
Komut
Destekleniyor
type
Yes
Biriktirici ifadeleri
Komut
Destekleniyor
sum
Yes
avg
Yes
first
Yes
last
Yes
max
Yes
min
Yes
push
Yes
addToSet
Yes
stdDevPop
Yes
stdDevSamp
Yes
Merge işleci
Komut
Destekleniyor
mergeObjects
Yes
Veri türleri
MongoDB için Azure Cosmos DB, MongoDB BSON biçiminde kodlanmış belgeleri destekler. 4.0 API sürümü, performansı geliştirmek ve maliyetleri azaltmak için bu biçimin iç kullanımını geliştirir. 4.0+ çalıştıran bir uç nokta aracılığıyla yazılan veya güncelleştirilen belgeler iyileştirmeden yararlanıyor.
Yükseltme senaryosunda, sürüm 4.0+ yükseltmesinden önce yazılan belgeler, 4.0+ uç noktası üzerinden bir yazma işlemi aracılığıyla güncelleştirilene kadar gelişmiş performanstan yararlanamaz.
16 MB'lık belge desteği, belgelerinizi boyut sınırını 2 MB'tan 16 MB'a yükseltir. Bu sınır yalnızca bu özellik etkinleştirildikten sonra oluşturulan koleksiyonlar için geçerlidir. Bu özellik veritabanı hesabınızda etkinleştirildikten sonra devre dışı bırakılamaz.
Daha büyük belgelere sahip isteklerin başarılı olmasını sağlamak için Sunucu Tarafı Yeniden Deneme'yi etkinleştirmenizi ve joker dizinlerden kaçınmanızı öneririz. Gerekirse, VERITABANı/Koleksiyon RU'larınızı yükseltmek de performansa yardımcı olabilir.
Komut
Destekleniyor
Double
Yes
String
Yes
Object
Yes
Array
Yes
Binary Data
Yes
ObjectId
Yes
Boolean
Yes
Date
Yes
Null
Yes
32-bit Integer (int)
Yes
Timestamp
Yes
64-bit Integer (long)
Yes
MinKey
Yes
MaxKey
Yes
Decimal128
Yes
Regular Expression
Yes
JavaScript
Yes
JavaScript (with scope)
Yes
Undefined
Yes
Dizinler ve dizin özellikleri
Dizinler
Komut
Destekleniyor
Single Field Index
Yes
Compound Index
Yes
Multikey Index
Yes
Text Index
Hayır
2dsphere
Yes
2d Index
Hayır
Hashed Index
Hayır
Dizin özellikleri
Komut
Destekleniyor
TTL
Yes
Unique
Yes
Partial
Hayır
Case Insensitive
Hayır
Sparse
Hayır
Background
Yes
İşleçler
Mantıksal işleçler
Komut
Desteklenir
or
Yes
and
Yes
not
Yes
nor
Yes
Öğe işleçleri
Komut
Destekleniyor
exists
Yes
type
Yes
Değerlendirme sorgusu işleçleri
Komut
Desteklenir
expr
Yes
jsonSchema
Hayır
mod
Yes
regex
Yes
text
Hayır (Desteklenmez. Bunun yerine $regex kullanın.)
where
Hayır
$regex sorgularında, sol bağlantılı ifadeler dizin aramasına izin verir. Ancak 'i' değiştiricisini (büyük/küçük harf duyarlığı) ve 'm' değiştiricisini (çok satırlılık) kullanmak, tüm ifadelerde koleksiyon taramasına neden olur.
'$' veya '|' eklemeniz gerektiğinde, en iyisi iki (veya daha fazla) regex sorgusu oluşturmaktır. Örneğin, aşağıdaki özgün sorgu göz önünde bulundurulduğunda: find({x:{$regex: /^abc$/})aşağıdaki gibi değiştirilmesi gerekir:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
İlk kısım aramayı ^abc ile başlayan belgeler ile sınırlamak için dizini kullanır, ikinci kısım ise tam girişler ile eşleşir. Çubuk işleci '|' "veya" işlevini görür - find({x:{$regex: /^abc |^def/}) sorgusu 'x' alanının değerlerinin "abc" ile veya "def" ile başladığı belgelerle eşleşir. Dizinden yararlanmak için sorgunun $or işleci ile birleştirilen iki farklı sorguya bölünmesi gerekir: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Dizi işleçleri
Komut
Desteklenir
all
Yes
elemMatch
Yes
size
Yes
Açıklama işleci
Komut
Desteklenir
comment
Yes
Projeksiyon işleçleri
Komut
Desteklenir
elemMatch
Yes
meta
Hayır
slice
Yes
Güncelleştirme işleçleri
Alan güncelleştirme işleçleri
Komut
Destekleniyor
inc
Yes
mul
Yes
rename
Yes
setOnInsert
Yes
set
Yes
unset
Yes
min
Yes
max
Yes
currentDate
Yes
Dizi güncelleştirme işleçleri
Komut
Destekleniyor
$
Yes
$[]
Yes
$[\<identifier\>]
Yes
addToSet
Yes
pop
Yes
pullAll
Yes
pull
Yes
push
Yes
pushAll
Yes
Değiştiricileri güncelleştirme
Komut
Desteklenir
each
Yes
slice
Yes
sort
Yes
position
Yes
Bit düzeyinde güncelleştirme işleci
Komut
Desteklenir
bit
Yes
bitsAllSet
Hayır
bitsAnySet
Hayır
bitsAllClear
Hayır
bitsAnyClear
Hayır
Jeo-uzamsal işleçler
Operatör
Desteklenir
$geoWithin
Yes
$geoIntersects
Yes
$near
Yes
$nearSphere
Yes
$geometry
Yes
$minDistance
Yes
$maxDistance
Yes
$center
Hayır
$centerSphere
Hayır
$box
Hayır
$polygon
Hayır
Sıralama işlemleri
MongoDB sürüm 4.0 için API ile işlemi kullandığınızda findOneAndUpdate , tek bir alanda ve birden çok alanda sıralama işlemleri desteklenir. Birden çok alanda yapılan sıralama işlemleri, önceki kablo protokollerinin bir sınırlamasıydı.
Dizinleme
MongoDB API'si birden çok alanda sıralamayı etkinleştirmek, sorgu performansını geliştirmek ve benzersizliği zorlamak için çeşitli dizinleri destekler .
GridFS
Azure Cosmos DB, GridFS uyumlu herhangi bir Mongo sürücüsü aracılığıyla GridFS'i destekler.
Çoğaltma
Azure Cosmos DB, en düşük katmanlarda otomatik, yerel çoğaltmayı destekler. Bu mantık, düşük gecikme süresi ve küresel çoğaltma elde etmek için genişletilir. Azure Cosmos DB el ile çoğaltma komutlarını desteklemez.
Yeniden Denenebilir Yazma İşlemleri
Yeniden denenebilir yazmalar, MongoDB sürücülerinin hata olduğunda belirli yazma işlemlerini otomatik olarak yeniden denemesine olanak tanır, ancak mongoDB protokol gereksinimleriyle eşleşen belirli işlemler için daha sıkı gereksinimlerle sonuçlanabilir. Bu özellik etkinleştirildiğinde, parçalı koleksiyonlardaki silme işlemleri de dahil olmak üzere güncelleştirme işlemleri, parça anahtarının sorgu filtresine veya update deyimine eklenmesini gerektirir.
Örneğin, "ülke" anahtarında parçalanmış parçalı bir koleksiyonla: Alan şehri = "NYC" olan tüm belgeleri silmek için, Yeniden denenebilir yazmalar etkinleştirildiğinde uygulamanın tüm parça anahtarı (ülke) değerleri için işlemi yürütmesi gerekir.
db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Başarı
db.coll.deleteMany({"city": "NYC"})- ShardKeyNotFound(61) hatasıyla başarısız oluyor
Not
Yeniden denenebilir yazma işlemleri şu anda toplu sıralanmamış yazmaları desteklemez. Yeniden denenebilir yazmalar etkinken toplu yazma işlemleri gerçekleştirmek istiyorsanız, toplu sıralı yazma işlemleri gerçekleştirin.
Özelliği etkinleştirmek için enableMongoRetryableWrites özelliğini veritabanı hesabınıza ekleyin. Bu özellik Azure portal özellikler sekmesinde de etkinleştirilebilir.
Parçalama
Azure Cosmos DB, otomatik, sunucu tarafı parçalamasını destekler. Parça oluşturma, yerleştirme ve dengelemeyi otomatik olarak yönetir. Azure Cosmos DB el ile parçalama komutlarını desteklemez. Bu, addShard, balancerStart, moveChunk gibi komutları çağırmanız gerekmediği anlamına gelir. Yalnızca kapsayıcıları oluştururken veya verileri sorgularken parça anahtarını belirtmeniz gerekir.
Oturumlar
Azure Cosmos DB henüz sunucu tarafı oturum komutlarını desteklemez.
Etkin kalma süresi (TTL)
Azure Cosmos DB, belgenin zaman damgasını temel alan yaşam süresini (TTL) destekler. TTL, Azure portal koleksiyonlar için etkinleştirilebilir.
İşlemler
Çok belgeli işlemler parçalanmamış bir koleksiyonda desteklenir. Çok belgeli işlemler koleksiyonlar arasında veya parçalı koleksiyonlarda desteklenmez. İşlemler için zaman aşımı sabit 5 saniyedir.
Kullanıcı ve rol yönetimi
Azure Cosmos DB henüz kullanıcıları ve rolleri desteklemez. Ancak Azure Cosmos DB, azure rol tabanlı erişim denetimini (Azure RBAC) ve Azure portal (Bağlantı Dizesi sayfası) aracılığıyla elde edilebilen okuma-yazma ve salt okunur parolaları/anahtarları destekler.
Robo 3T'yi MongoDB için Azure Cosmos DB ile kullanmayı öğrenin.
MongoDB için Azure Cosmos DB ile MongoDB örneklerini keşfedin.
Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.