MongoDB için Azure Cosmos DB (5.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ı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.com
bir uç noktaya sahiptir. Hesapların 3.2 sürümünde biçiminde *.documents.azure.com
bir uç nokta vardır.
Not
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 |
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ı
Not
Ç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 |
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
MongoDB için Azure Cosmos DB aşağıdaki toplama komutlarını destekler.
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 |
Hayı |
group |
Evet |
indexStats |
Hayı |
limit |
Evet |
listLocalSessions |
Hayır |
listSessions |
Hayır |
lookup |
Kısmi |
match |
Yes |
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 |
Not
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.let
pipeline
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 |
round |
Evet |
sqrt |
Evet |
subtract |
Evet |
trunc |
Yes |
Trigonometri ifadeleri
Command | Desteklenir |
---|---|
acos |
Yes |
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 |
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 |
---|---|
$$CLUSTERTIME |
Yes |
$$CURRENT |
Evet |
$$DESCEND |
Evet |
$$KEEP |
Evet |
$$NOW |
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 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 belge desteği, belgeleriniz için boyut sınırını 2 MB’den 16 MB’ye çıkarır. Bu sınır yalnızca bu özellik etkinleştirildikten sonra oluşturulan koleksiyonlar için geçerlidir. Bu özellik veri tabanı 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 |
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
MongoDB için Azure Cosmos DB aşağıdaki dizin komutlarını ve dizin özelliklerini destekler.
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 |
Yes |
Partial |
Yalnızca benzersiz dizinler için desteklenir |
Case Insensitive |
Hayır |
Sparse |
Hayır |
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 |
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 kullanın $regex .) |
where |
Hayır |
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 ^abc
belgelerle 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 def
ile 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 |
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
İş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
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. Başka bir deyişle , balancerStart
ve moveChunk
gibi addShard
komutları ç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ğlantı 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
- MongoDB için Azure Cosmos DB ile Studio 3T kullanmayı öğrenin.
- MongoDB için Azure Cosmos DB ile Robo 3T kullanmayı öğrenin.
- MongoDB için Azure Cosmos DB 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ı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ını kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.