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 global olarak dağıtılan ç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ı olarak 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 garantileri, 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 tüm istemci sürücülerinin 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:
$lookuphenüz sunucu sürümü 3.6'da kullanıma sunulan bağıntısız alt sorgular özelliğini desteklemez. ve pipeline alanlarıyla işlecini kullanmayı $lookup denerseniz içeren let is not supported bir iletiyle let ilgili bir hata alırsınız.
Mantıksal ifadeler
Command
Desteklenir
and
Yes
not
Evet
or
Yes
Dönüştürme ifadeleri
Command
Desteklenir
convert
Yes
toBool
Evet
toDate
Evet
toDecimal
Evet
toDouble
Evet
toInt
Evet
toLong
Evet
toObjectId
Evet
toString
Yes
Küme ifadeleri
Command
Desteklenir
setEquals
Yes
setIntersection
Evet
setUnion
Evet
setDifference
Evet
setIsSubset
Evet
anyElementTrue
Evet
allElementsTrue
Yes
Karşılaştırma ifadeleri
Not
MongoDB IÇIN API, sorguda dizi değişmez değeri olan karşılaştırma ifadelerini desteklemez.
Command
Desteklenir
cmp
Yes
eq
Evet
gt
Evet
gte
Evet
lt
Evet
lte
Evet
ne
Evet
in
Evet
nin
Yes
Aritmetik ifadeler
Command
Desteklenir
abs
Yes
add
Evet
ceil
Evet
divide
Evet
exp
Evet
floor
Evet
ln
Evet
log
Evet
log10
Evet
mod
Evet
multiply
Evet
pow
Evet
sqrt
Evet
subtract
Evet
trunc
Yes
Dize ifadeleri
Command
Desteklenir
concat
Yes
indexOfBytes
Evet
indexOfCP
Evet
ltrim
Evet
rtrim
Evet
trim
Evet
split
Evet
strLenBytes
Evet
strLenCP
Evet
strcasecmp
Evet
substr
Evet
substrBytes
Evet
substrCP
Evet
toLower
Evet
toUpper
Yes
Metin arama işleci
Command
Desteklenir
meta
Hayır
Dizi ifadeleri
Command
Desteklenir
arrayElemAt
Yes
arrayToObject
Evet
concatArrays
Evet
filter
Evet
indexOfArray
Evet
isArray
Evet
objectToArray
Evet
range
Evet
reverseArray
Evet
reduce
Evet
size
Evet
slice
Evet
zip
Evet
in
Yes
Değişken işleçleri
Command
Desteklenir
map
Yes
let
Yes
Sistem değişkenleri
Command
Desteklenir
$$CURRENT
Yes
$$DESCEND
Evet
$$KEEP
Evet
$$PRUNE
Evet
$$REMOVE
Evet
$$ROOT
Yes
Değişmez değer işleci
Command
Desteklenir
literal
Yes
Tarih ifadeleri
Command
Desteklenir
dayOfYear
Yes
dayOfMonth
Evet
dayOfWeek
Evet
year
Evet
month
Evet
week
Evet
hour
Evet
minute
Evet
second
Evet
millisecond
Evet
dateToString
Evet
isoDayOfWeek
Evet
isoWeek
Evet
dateFromParts
Evet
dateToParts
Evet
dateFromString
Evet
isoWeekYear
Yes
Koşullu ifadeler
Command
Desteklenir
cond
Yes
ifNull
Evet
switch
Yes
Veri türü işleci
Command
Desteklenir
type
Yes
Biriktirici ifadeleri
Command
Desteklenir
sum
Yes
avg
Evet
first
Evet
last
Evet
max
Evet
min
Evet
push
Evet
addToSet
Evet
stdDevPop
Evet
stdDevSamp
Yes
Birleştirme işleci
Command
Desteklenir
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+ sürümüne yükseltmeden önce yazılan belgeler, 4.0+ uç noktası üzerinden bir yazma işlemiyle 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.
Azure portalındaki özellikler sekmesinden veya "EnableMongo16MBDocumentSupport" özelliği eklenerek program aracılığıyla 16 MB etkinleştirilebilir.
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.
Command
Desteklenir
Double
Yes
String
Evet
Object
Evet
Array
Evet
Binary Data
Evet
ObjectId
Evet
Boolean
Evet
Date
Evet
Null
Evet
32-bit Integer (int)
Evet
Timestamp
Evet
64-bit Integer (long)
Evet
MinKey
Evet
MaxKey
Evet
Decimal128
Evet
Regular Expression
Evet
JavaScript
Evet
JavaScript (with scope)
Evet
Undefined
Yes
Dizinler ve dizin özellikleri
Dizinler
Command
Desteklenir
Single Field Index
Yes
Compound Index
Evet
Multikey Index
Evet
Text Index
Hayı
2dsphere
Evet
2d Index
Hayır
Hashed Index
Hayır
Dizin özellikleri
Command
Desteklenir
TTL
Yes
Unique
Evet
Partial
Hayır
Case Insensitive
Hayır
Sparse
Hayır
Background
Evet
İşleçler
Mantıksal işleçler
Command
Desteklenir
or
Yes
and
Evet
not
Evet
nor
Yes
Öğe işleçleri
Command
Desteklenir
exists
Yes
type
Yes
Değerlendirme sorgusu işleçleri
Command
Desteklenir
expr
Yes
jsonSchema
Hayı
mod
Evet
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
Command
Desteklenir
all
Yes
elemMatch
Evet
size
Yes
Açıklama işleci
Command
Desteklenir
comment
Yes
Projeksiyon işleçleri
Command
Desteklenir
elemMatch
Yes
meta
Hayı
slice
Evet
Güncelleştirme işleçleri
Alan güncelleştirme işleçleri
Command
Desteklenir
inc
Yes
mul
Evet
rename
Evet
setOnInsert
Evet
set
Evet
unset
Evet
min
Evet
max
Evet
currentDate
Yes
Dizi güncelleştirme işleçleri
Command
Desteklenir
$
Yes
$[]
Evet
$[\<identifier\>]
Evet
addToSet
Evet
pop
Evet
pullAll
Evet
pull
Evet
push
Evet
pushAll
Yes
Değiştiricileri güncelleştirme
Command
Desteklenir
each
Yes
slice
Evet
sort
Evet
position
Yes
Bit düzeyinde güncelleştirme işleci
Command
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
Evet
$near
Evet
$nearSphere
Evet
$geometry
Evet
$minDistance
Evet
$maxDistance
Evet
$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 , işlemleri tek bir alanda ve birden çok alanda sıralama işlemi desteklenir. Birden çok alandaki sıralama işlemleri, önceki kablo protokollerinin bir sınırlamasıydı.
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 yazma işlemleri, 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ı gereksinimlere neden olur. 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ına parçalanmış parçalanmış bir koleksiyonla: Alan şehri = "NYC" olan tüm belgeleri silmek için, Yeniden denenebilir yazmalar etkinleştirildiyse 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.
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, yani addShard, balancerStart, moveChunk vb. komutları çağırmanız gerekmez. 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ından koleksiyonlar için etkinleştirilebilir.
Hareketler
Ç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.
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.
Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin