MongoDB için Azure Cosmos DB (4.0 sunucu sürümü): desteklenen özellikler ve söz dizimi

Ş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:

Sorgulama ve yazma işlemi komutları

Command Desteklenir
change streams Yes
delete Evet
eval Hayı
find Evet
findAndModify Evet
getLastError Evet
getMore Evet
getPrevError Hayı
insert Evet
parallelCollectionScan Hayır
resetError Hayır
update Evet

İşlem komutları

Command Desteklenir
abortTransaction Yes
commitTransaction Yes

Kimlik doğrulama komutları

Command Desteklenir
authenticate Yes
getnonce Evet
logout Yes

Yönetim komutları

Command Desteklenir
cloneCollectionAsCapped Hayır
collMod Hayır
connectionStatus Hayır
convertToCapped Hayır
copydb Hayır
create Evet
createIndexes Evet
currentOp Evet
drop Evet
dropDatabase Evet
dropIndexes Evet
filemd5 Evet
killCursors Evet
killOp Hayı
listCollections Evet
listDatabases Evet
listIndexes Evet
reIndex Evet
renameCollection Hayır

Tanılama komutları

Command Desteklenir
buildInfo Yes
collStats Evet
connPoolStats Hayır
connectionStatus Hayır
dataSize Hayır
dbHash Hayır
dbStats Evet
explain Evet
features Hayı
hostInfo Evet
listDatabases Evet
listCommands Hayır
profiler Hayır
serverStatus Hayır
top Hayır
whatsmyuri Evet

Toplama ardışık düzeni

Toplama komutları

Command Desteklenir
aggregate Yes
count Evet
distinct Evet
mapReduce Hayır

Toplama aşamaları

Command Desteklenir
addFields Yes
bucket Hayır
bucketAuto Hayır
changeStream Evet
collStats Hayı
count Evet
currentOp Hayı
facet Evet
geoNear Evet
graphLookup Evet
group Evet
indexStats Hayı
limit Evet
listLocalSessions Hayır
listSessions Hayır
lookup Kısmi
match Yes
out Evet
project Evet
redact Evet
replaceRoot Evet
replaceWith Hayı
sample Evet
skip Evet
sort Evet
sortByCount Evet
unwind Evet

Not

$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ı.

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

Özelliği etkinleştirmek için veritabanı hesabınıza EnableMongoRetryableWrites özelliğini ekleyin. Bu özellik, Azure portalındaki ö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, 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.

Yazma Sorunu

Bazı uygulamalar, yazma işlemi sırasında gereken yanıt sayısını belirten Yazma Sorunu'na dayanır. Azure Cosmos DB'nin çoğaltmayı arka planda nasıl işlediğinden, tüm yazma işlemleri varsayılan olarak otomatik olarak Çekirdek'tir. İstemci kodu tarafından belirtilen yazma endişeleri yoksayılır. Daha fazla bilgi için bkz. Kullanılabilirlik ve performansı en üst düzeye çıkarmak için tutarlılık düzeylerini kullanma.

Sonraki adımlar