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

Uygulama hedefı: MongoDB için Azure Cosmos DB API

Azure Cosmos DB, Microsoft'un genel olarak dağıtılmış çok modelli veritabanı hizmetidir. Açık kaynak MongoDB istemci sürücülerini kullanarak MongoDB için Azure Cosmos DB API'si ile iletişim kurabilirsiniz. MongoDB için Azure Cosmos DB’nin API’si, MongoDB kablo protokolüne bağlı kalarak mevcut istemci sürücülerinin kullanımını etkinleştirir.

MongoDB için Azure Cosmos DB API'sini kullanarak, Cosmos DB'nin sağladığı tüm kurumsal özelliklerle, kullanılmaya hazır mongoDB'nin avantajlarından faydalanabilirsiniz: genel dağıtım,otomatik parçalama, kullanılabilirlik ve gecikme süresi garantileri, beklemede ş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üleri MongoDB için Azure Cosmos DB’nin API’sine bağlanabilmesi gerekir. MongoDB hesapları için Azure Cosmos DB API'sini kullanırken hesapların 3.6+ sürümleri uç nokta biçimindeyken hesapların 3.2 sürümünde uç nokta *.mongo.cosmos.azure.com *.documents.azure.com biçimindedir.

Not

Bu makale yalnızca desteklenen sunucu komutlarını listeler ve istemci tarafı sarmalayıcı işlevlerini dışlar. ve gibi istemci tarafı sarmalayıcı işlevleri deleteMany() updateMany() ve sunucu komutlarını dahili olarak delete() update() kullanır. Desteklenen sunucu komutlarını kullanan işlevler, MongoDB için Azure Cosmos DB API'si ile uyumludur.

Sorgu dili desteği

MongoDB için Azure Cosmos DB API'si, 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ı

Azure Cosmos DB'nin MongoDB API'si aşağıdaki veritabanı komutlarını destekler:

Sorgulama ve yazma işlemi komutları

Komut Destekleniyor
akışları değiştirme Yes
delete Yes
değerlendirme No
find Yes
findAndModify Yes
getLastError Yes
getMore Yes
getPrevError No
insert Yes
parallelCollectionScan No
resetError No
update Yes

İşlem komutları

Komut Desteklenir
abortTransaction Yes
Committransaction Yes

Kimlik doğrulama komutları

Komut Destekleniyor
authenticate Yes
getnonce Yes
logout Yes

Yönetim komutları

Komut Destekleniyor
cloneCollectionAsCapped No
collMod No
connectionStatus No
convertToCapped No
copydb No
oluşturmaya Yes
createIndexes Yes
currentOp Yes
drop Yes
dropDatabase Yes
dropIndexes Yes
filemd5 Yes
killCursors Yes
killOp No
listCollections Yes
listDatabases Yes
listIndexes Yes
reIndex Yes
renameCollection No

Tanılama komutları

Komut Destekleniyor
buildInfo Yes
collStats Yes
connPoolStats No
connectionStatus No
Datasize No
dbHash No
dbStats Yes
Açıklaya Yes
özellikler No
hostInfo Yes
listDatabases Yes
listCommands No
Profiler No
Serverstatus No
top No
whatsmyuri Yes

Toplama işlem hattı

Toplama komutları

Komut Destekleniyor
aggregate Yes
count Yes
distinct Yes
mapReduce No

Toplama aşamaları

Komut Destekleniyor
$addFields Yes
$bucket No
$bucketAuto No
$changeStream Yes
$collStats No
$count Yes
$currentOp No
$facet Yes
$geoNear Yes
$graphLookup Yes
$group Yes
$indexStats No
$limit Yes
$listLocalSessions No
$listSessions No
$lookup Kısmi
$match Yes
$out Yes
$project Yes
$redact Yes
$replaceRoot Yes
$replaceWith No
$sample Yes
$skip Yes
$sort Yes
$sortByCount Yes
$unwind Yes

Not

$lookuphenüz sunucu sürümü 3.6'da tanıt kullanılan, ilişkili olmayan altqueries özelliğini desteklemez. işlecini ve alanlarıyla kullanmayı let is not supported denerse iletisini içeren bir hata $lookup let pipeline 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 Desteklenir
$setEquals Yes
$setIntersection Yes
$setUnion Yes
$setDifference Yes
$setIsSubset Yes
$anyElementTrue Yes
$allElementsTrue Yes

Karşılaştırma ifadeleri

Not

MongoDB API'si sorguda dizi değişmez değer içeren 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 Desteklenir
$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 Desteklenir
$meta No

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 Destekleniyor
$map Yes
$let Yes

Sistem değişkenleri

Komut Destekleniyor
$$CURRENT Yes
$$DESCEND Yes
$$KEEP Yes
$$PRUNE Yes
$$REMOVE Yes
$$ROOT Yes

Değişmez işleç

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 Desteklenir
$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

Birleştirme işleci

Komut Desteklenir
$mergeObjects Yes

Veri türleri

Azure Cosmos DB'nin MongoDB API'si, MongoDB BSON biçiminde kodlanmış belgeleri destekler. 4.0 API sürümü, performansı artırmak ve maliyetleri azaltmak için bu biçimin iç kullanımını artırır. 4.0 çalıştıran bir uç nokta üzerinden yazılan veya güncelleştirilen belgeler bundan yararlanabilir.

Bir yükseltme senaryosunda,sürüm 4.0'a yükseltmeden önce yazılmış belgeler, 4.0 uç noktası aracılığıyla bir yazma işlemi yoluyla güncelleştirilene kadar gelişmiş performanstan yararlanmaz.

Komut Destekleniyor
Çift Evet
Dize Yes
Nesne Yes
Dizi Yes
İkili Veriler Yes
ObjectId Yes
Boole Yes
Tarih Yes
Null Yes
32 bit Tamsayı (int) Yes
Timestamp Yes
64 bit Tamsayı (uzun) Yes
MinKey Yes
MaxKey Yes
Ondalık128 Yes
Normal ifade Yes
JavaScript Yes
JavaScript (kapsam ile) Yes
Tanımsız Yes

Dizinler ve dizin özellikleri

Dizinler

Komut Desteklenir
Tek Alan Dizini Yes
Bileşik Dizin Yes
Çok Anahtarlı Dizin Yes
Metin Dizini No
2dsphere Yes
2d Dizin No
Karma Dizin Yes

Dizin özellikleri

Komut Destekleniyor
TTL Yes
Benzersiz Yes
Kısmi No
Büyük/Büyük/Harfe Duyarlı Değil No
Seyrek No
Arka Plan Yes

İşleçler

Mantıksal işleçler

Komut Destekleniyor
$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 Destekleniyor
$expr No
$jsonSchema No
$mod Yes
$regex Yes
$text Hayır (Desteklenmiyor. Bunun $regex kullanın.)
$where No

$Regex sorgularda, sola sabitlenmiş 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 '|' karakterinin dahil edilmesinin gerektiği durumlarda iki (veya daha fazla) normal ifade sorgusu oluşturmak en iyisidir. Örneğin, aşağıdaki özgün sorgu verildiğinde find({x:{$regex: /^abc$/}) , şu şekilde 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 Destekleniyor
$all Yes
$elemMatch Yes
$size Yes

Açıklama işleci

Komut Desteklenir
$comment Yes

Projeksiyon işleçleri

Komut Destekleniyor
$elemMatch Yes
$meta No
$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

Güncelleştirme değiştiricileri

Komut Destekleniyor
$each Yes
$slice Yes
$sort Yes
$position Yes

Bit düzeyinde güncelleştirme işleci

Komut Destekleniyor
$bit Yes
$bitsAllSet No
$bitsAnySet No
$bitsAllClear No
$bitsAnyClear No

Jeo-uzamsal işleçler

Operatör Desteklenir
$geoWithin Yes
$geoIntersects Yes
$near Yes
$nearSphere Yes
$geometry Yes
$minDistance Yes
$maxDistance Yes
$center No
$centerSphere No
$box No
$polygon No

Sıralama işlemleri

işlemi findOneAndUpdate kullanırken, tek bir alanda sıralama işlemleri desteklene, ancak birden çok alanda sıralama işlemleri desteklanmaz.

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 ile uyumlu tüm Mongo sürücülerini kullanarak GridFS'yi 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. Cosmos VERITABANı, el ile çoğaltma komutlarını desteklemez.

Yeniden Denenebilir Yazmalar

Cosmos VERITABANı henüz yeniden denenebilir yazmaları desteklemez. İstemci sürücülerinin bağlantı dizelerine 'retryWrites=false' URL parametresini eklemesi gerekir. Daha fazla URL parametresine ön ek olarak '&' eklenebilir.

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 da addShard, balancerStart, moveChunk gibi komutları çağırmanız gerek yoktur. Parça anahtarını yalnızca kapsayıcıları oluştururken veya verileri sorgularken belirtmeniz gerekir.

Oturumlar

Azure Cosmos DB henüz sunucu tarafı oturum komutlarını desteklememektedir.

Etkin kalma süresi (TTL)

Azure Cosmos DB, belgenin zaman damgasına göre yaşam süresi (TTL) desteği sunar. TTL, koleksiyonlar için Azure portal.

İşlemler

Çok belgeli işlemler, parçalanmamış bir koleksiyonda de destekler. Çok belgeli işlemler koleksiyonlarda veya parçalı koleksiyonlarda desteklanmaz. İşlemler için zaman aşımı sabit bir 5 saniyedir.

Kullanıcı ve rol yönetimi

Azure Cosmos DB henüz kullanıcıları ve rolleri desteklememektedir. Ancak Cosmos DB, Azure rol tabanlı erişim denetimi (Azure RBAC) ve Azure portal (Bağlantı Dizesi sayfası) aracılığıyla edinilen okuma/yazma ve salt okunur parolaları/anahtarları destekler.

Yazma Sorunu

Bazı uygulamalar, yazma işlemi sırasındagereken yanıt sayısını belirten yazma sorununa güvenmektedir. Cosmos DB’nin arka planda çoğaltma işleme şekli nedeniyle varsayılan olarak tüm yazma işlemleri otomatik olarak çekirdektir. İstemci kodu tarafından belirtilen yazma endişesi 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

  • MongoDB için Azure Cosmos DB API'si ile Studio 3T'yi kullanmayı öğrenin.
  • Robo 3T'yi MongoDB için Azure Cosmos DB API'si ile kullanmayı öğrenin.
  • MongoDB için Azure Cosmos DB API'si 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ında bilgi kullanabilirsiniz.
    • Mevcut veritabanı kümenizin sanal çekirdek ve sunucu sayısı hakkında tek bilginiz varsa, sanal çekirdek veya vCPUS kullanarak istek birimlerini tahmin hakkında bilgi edinebilirsiniz
    • Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız, Azure veritabanı veritabanı kapasite planlayıcısı kullanarak istek birimlerini tahmin Cosmos hakkında bilgi edinin