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

Sorgulama ve yazma işlemi komutları

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

İşlem komutları

Komut Desteklenir
abortTransaction Yes
commitTransaction Yes

Kimlik doğrulama komutları

Komut Desteklenir
authenticate Yes
getnonce Yes
logout Yes

Yönetim komutları

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

Tanılama komutları

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

Toplama ardışık düzeni

Toplama komutları

Komut Desteklenir
aggregate Yes
count Yes
distinct Yes
mapReduce Hayır

Toplama aşamaları

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

Not

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

16 MB'yi etkinleştirme işlemi Azure portal özellikler sekmesinden veya program aracılığıyla "EnableMongo16MBDocumentSupport" özelliği eklenerek yapılabilir.

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.

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 işleme şekli nedeniyle 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