MongoDB için Azure Cosmos DB (4.2 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ılan çok modelli veritabanı hizmetidir. Azure Cosmos DB birden çok veritabanı API'si sunar. 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ımını destekler.

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 bu makalede 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ümü biçiminde *.mongo.cosmos.azure.combir uç noktaya sahiptir. Hesapların 3.2 sürümünde biçiminde *.documents.azure.combir uç nokta vardır.

Dekont

Bu makalede yalnızca desteklenen sunucu komutları listelenir ve istemci tarafı sarmalayıcı işlevleri dışlanır. 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. Aşağıdaki bölümlerde, şu anda desteklenen işlemlerin, işleçlerin, aşamaların, komutların ve seçeneklerin ayrıntılı listesini 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 Evet
delete Evet
eval Hayı
find Evet
findAndModify Evet
getLastError Evet
getMore Evet
getPrevError Hayı
insert Evet
parallelCollectionScan Hayı
resetError No.
update Evet

İşlem komutları

Dekont

Çok belgeli işlemler yalnızca parçalanmamış tek bir koleksiyonda desteklenir. MongoDB API'sinde çapraz toplama ve parçalar arası çoklu belge işlemleri henüz desteklenmemektedir.

Command Desteklenir
abortTransaction Evet
commitTransaction Evet

Kimlik doğrulama komutları

Command Desteklenir
authenticate Evet
getnonce Evet
logout Evet

Yönetim komutları

Command Desteklenir
cloneCollectionAsCapped Hayır
collMod No.
connectionStatus No.
convertToCapped No.
copydb No.
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 Evet
collStats Evet
connPoolStats Hayı
connectionStatus No.
dataSize No.
dbHash No.
dbStats Evet
explain Evet
features Hayı
hostInfo Evet
listDatabases Evet
listCommands Hayı
profiler No.
serverStatus No.
top No.
whatsmyuri Evet

Toplama ardışık düzeni

MongoDB için Azure Cosmos DB aşağıdaki toplama komutlarını destekler.

Toplama komutları

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

Toplama aşamaları

Command Desteklenir
addFields Evet
bucket Hayı
bucketAuto No.
changeStream Evet
collStats Hayı
count Evet
currentOp Hayı
facet Evet
geoNear Evet
graphLookup Hayı
group Evet
indexStats Hayı
limit Evet
listLocalSessions Hayı
listSessions Hayır
lookup Kısmi
match Evet
merge Evet
out Evet
planCacheStats Evet
project Evet
redact Evet
regexFind Evet
regexFindAll Evet
regexMatch Evet
replaceRoot Evet
replaceWith Evet
sample Evet
set Evet
skip Evet
sort Evet
sortByCount Evet
unset Evet
unwind Evet

Dekont

Toplama$lookup, sunucu sürümü 3.6'da sunulan bağıntısız alt sorgular özelliğini henüz desteklemez. ve alanlarıyla işlecini $lookup kullanmayı denerseniz, desteklenmeyenlet bir hata iletisi görüntülenir.letpipeline

Mantıksal ifadeler

Command Desteklenir
and Evet
not Evet
or Evet

Dönüştürme ifadeleri

Command Desteklenir
convert Evet
toBool Evet
toDate Evet
toDecimal Evet
toDouble Evet
toInt Evet
toLong Evet
toObjectId Evet
toString Evet

Küme ifadeleri

Command Desteklenir
setEquals Evet
setIntersection Evet
setUnion Evet
setDifference Evet
setIsSubset Evet
anyElementTrue Evet
allElementsTrue Evet

Karşılaştırma ifadeleri

Dekont

MongoDB IÇIN API, sorguda dizi değişmez değeri olan karşılaştırma ifadelerini desteklemez.

Command Desteklenir
cmp Evet
eq Evet
gt Evet
gte Evet
lt Evet
lte Evet
ne Evet
in Evet
nin Evet

Aritmetik ifadeler

Command Desteklenir
abs Evet
add Evet
ceil Evet
divide Evet
exp Evet
floor Evet
ln Evet
log Evet
log10 Evet
mod Evet
multiply Evet
pow Evet
round Evet
sqrt Evet
subtract Evet
trunc Evet

Trigonometri ifadeleri

Command Desteklenir
acos Evet
acosh Evet
asin Evet
asinh Evet
atan Evet
atan2 Evet
atanh Evet
cos Evet
cosh Evet
degreesToRadians Evet
radiansToDegrees Evet
sin Evet
sinh Evet
tan Evet
tanh Evet

Dize ifadeleri

Command Desteklenir
concat Evet
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 Evet

Metin arama işleci

Command Desteklenir
meta No

Dizi ifadeleri

Command Desteklenir
arrayElemAt Evet
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 Evet

Değişken işleçleri

Command Desteklenir
map Evet
let Evet

Sistem değişkenleri

Command Desteklenir
$$CLUSTERTIME Evet
$$CURRENT Evet
$$DESCEND Evet
$$KEEP Evet
$$NOW Evet
$$PRUNE Evet
$$REMOVE Evet
$$ROOT Evet

Değişmez değer işleci

Command Desteklenir
literal Evet

Tarih ifadeleri

Command Desteklenir
dayOfYear Evet
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 Evet

Koşullu ifadeler

Command Desteklenir
cond Evet
ifNull Evet
switch Evet

Veri türü işleci

Command Desteklenir
type Evet

Biriktirici ifadeleri

Command Desteklenir
sum Evet
avg Evet
first Evet
last Evet
max Evet
min Evet
push Evet
addToSet Evet
stdDevPop Evet
stdDevSamp Evet

Birleştirme işleci

Command Desteklenir
mergeObjects Evet

Veri türleri

MongoDB için Azure Cosmos DB, MongoDB BSON biçiminde kodlanmış belgeleri destekler. 4.0 ve üzeri sürümler (4.0+), performansı artırmak 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 bu iyileştirmeden yararlanıyor.

Yükseltme senaryosunda, sürüm 4.0+ yükseltmesinden önce yazılmış 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ız için etkinleştirildiğinde devre dışı bırakılamaz.

16 MB belge desteğini etkinleştirmek için Azure portalındaki kaynağın Özellikler sekmesindeki ayarı değiştirin veya özelliği program aracılığıyla ekleyinEnableMongo16MBDocumentSupport.

Sunucu Tarafı Yeniden Deneme'yi etkinleştirmenizi ve daha büyük belgelerdeki isteklerin başarılı olduğundan emin olmak için joker karakter dizinlerini kullanmaktan kaçınmanızı öneririz. Veritabanınızı veya koleksiyon isteği birimlerinizi yükseltmek de performansa yardımcı olabilir.

Command Desteklenir
Double Evet
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 Evet

Dizinler ve dizin özellikleri

MongoDB için Azure Cosmos DB aşağıdaki dizin komutlarını ve dizin özelliklerini destekler.

Dizinler

Command Desteklenir
Single Field Index Evet
Compound Index Evet
Multikey Index Evet
Text Index Hayı
2dsphere Evet
2d Index Hayı
Hashed Index Hayır

Dizin özellikleri

Command Desteklenir
TTL Evet
Unique Evet
Partial Yalnızca benzersiz dizinler için desteklenir
Case Insensitive Hayır
Sparse No.
Background Evet

İşleçler

MongoDB için Azure Cosmos DB aşağıdaki işleçleri destekler.

Mantıksal işleçler

Command Desteklenir
or Evet
and Evet
not Evet
nor Evet

Öğe işleçleri

Command Desteklenir
exists Evet
type Evet

Değerlendirme sorgusu işleçleri

Command Desteklenir
expr Evet
jsonSchema Hayı
mod Evet
regex Evet
text Hayır (Desteklenmez. Bunun yerine kullanın $regex .)
where No

Sorgularda $regex , sol bağlantılı ifadeler dizin aramasına izin verir. Ancak değiştirici ( i büyük/küçük harf duyarsızlığı) ve değiştiriciyi m (çok satırlı) kullanmak koleksiyonun tüm ifadelerde taramasına neden olur.

veya |eklenmesi gerektiğinde$, en iyisi iki (veya daha fazla) $regex sorgu oluşturmaktır.

Örneğin, aşağıdaki özgün sorguyu değiştirin:

find({x:{$regex: /^abc$/})

Bu sorguya:

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

Değiştirilen sorgunun ilk bölümü, ile başlayan ^abcbelgelerle aramayı kısıtlamak için dizinini kullanır. Sorgunun ikinci bölümü tam girdilerle eşleşir. Çubuk işleci (|) bir "veya" işlevi görür. Sorgufind({x:{$regex: /^abc |^def/}), alanın x veya defile başlayan değerlere sahip olduğu belgelerle abc eşleşir. Dizini kullanmak için sorguyu işleci tarafından birleştirilen iki farklı sorguya $or bölmenizi öneririz: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Dizi işleçleri

Command Desteklenir
all Evet
elemMatch Evet
size Evet

Açıklama işleci

Command Desteklenir
comment Evet

Projeksiyon işleçleri

Command Desteklenir
elemMatch Evet
meta Hayı
slice Evet

Güncelleştirme işleçleri

Alan güncelleştirme işleçleri

Command Desteklenir
inc Evet
mul Evet
rename Evet
setOnInsert Evet
set Evet
unset Evet
min Evet
max Evet
currentDate Evet

Dizi güncelleştirme işleçleri

Command Desteklenir
$ Evet
$[] Evet
$[\<identifier\>] Evet
addToSet Evet
pop Evet
pullAll Evet
pull Evet
push Evet
pushAll Evet

Değiştiricileri güncelleştirme

Command Desteklenir
each Evet
slice Evet
sort Evet
position Evet

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

Command Desteklenir
bit Evet
bitsAllSet Hayı
bitsAnySet No.
bitsAllClear No.
bitsAnyClear Hayır

Jeo-uzamsal işleçler

İşleç Desteklenir
$geoWithin Evet
$geoIntersects Evet
$near Evet
$nearSphere Evet
$geometry Evet
$minDistance Evet
$maxDistance Evet
$center Hayı
$centerSphere No.
$box No.
$polygon Hayır

Sıralama işlemleri

İşlemi kullandığınızda findOneAndUpdate , tek bir alandaki sıralama işlemleri desteklenir. Birden çok alandaki sıralama işlemleri desteklenmez.

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.

İstemci tarafı alan düzeyinde şifreleme

İstemci düzeyinde alan şifrelemesi bir sürücü özelliğidir ve MongoDB API'siyle uyumludur. Sürücünün yazıldığında her alanı açıkça şifrelediği açık şifreleme desteklenir. Otomatik şifreleme desteklenmez. Açık şifre çözme ve otomatik şifre çözme desteklenir.

mongocryptd, desteklenen işlemlerden herhangi birini gerçekleştirmek için gerekli olmadığından çalıştırılmamalıdır.

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 ayrıca düşük gecikme süresine ve genel çoğaltmaya ulaşmak için genişletilir. Azure Cosmos DB el ile çoğaltma komutlarını desteklemez.

Yeniden denenebilir yazma işlemleri

Yeniden denenebilir yazma özelliği MongoDB sürücülerinin belirli yazma işlemlerini otomatik olarak yeniden denemesini sağlar. Bu özellik, 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, anahtarında "country" parçalanmış parçalı bir koleksiyonla, alanına "city" = "NYC"sahip tüm belgeleri silmek için, yeniden denenebilir yazma özelliği etkinse uygulamanın tüm parça anahtarı ("country") 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

Dekont

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. Başka bir deyişle , balancerStartve moveChunkgibi addShardkomutları çağırmanız gerekmez. 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ı desteklemez.

Yaşam Süresi

Azure Cosmos DB, belgenin zaman damgasını temel alan Yaşam Süresi'ni (TTL) destekler. Azure portalında bir koleksiyon için TTL'yi etkinleştirebilirsiniz.

Özel TTL

Bu özellik, koleksiyondaki herhangi bir alanda özel TTL ayarlama olanağı sağlar.

Bir alanda TTL'nin etkinleştirildiği bir koleksiyonda:

  • Kabul edilebilir türler BSON veri türü ve sayısal türlerdir (tamsayı, uzun veya çift), süre sonunu belirlemek için Unix milisaniyelik zaman damgası olarak yorumlanır.

  • TTL alanı bir diziyse, kabul edilebilir türde olan dizinin en küçük öğesi belgenin süre sonu için dikkate alınır.

  • Bir belgede TTL alanı eksikse, belgenin süresi dolmaz.

  • TTL alanı kabul edilebilir bir tür değilse, belgenin süresi dolmaz.

Özel TTL sınırlamaları

  • Koleksiyondaki yalnızca bir alanın üzerinde TTL kümesi olabilir.

  • Özel bir TTL alan kümesiyle, alan belgenin \_ts süre sonu için kullanılamaz.

  • Ayrıca alanı kullanamazsınız \_ts .

Yapılandırma

Hesabın özelliğini güncelleştirerek EnableTtlOnCustomPath özel bir TTL'yi etkinleştirebilirsiniz. Özellikleri yapılandırmayı öğrenin.

TTL'yi ayarlama

TTL'yi ayarlamak için şu komutu çalıştırın: db.coll.createIndex({"YOUR_CUSTOM_TTL_FIELD":1}, {expireAfterSeconds: 10})

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ıları ve rolleri yönetme

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ından (Bağlan ion Dizeleri sayfasında) elde edilebilen okuma-yazma ve salt okunur parolaları ve anahtarları destekler.

Yazma endişeleri

Bazı uygulamalar, yazma işlemi sırasında gereken yanıt sayısını belirten bir yazma sorununa 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 tüm yazma endişeleri yoksayılır. Kullanılabilirlik ve performansı en üst düzeye çıkarmak için tutarlılık düzeylerini kullanmayı öğrenin.

Sonraki adımlar