Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Mevcut bir MongoDB uygulamasını geçirmek mi yoksa MongoDB Sorgu Dili (MQL) özelliklerini kullanmak mı istiyorsunuz? Azure DocumentDB'ye göz atın.
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.
MongoDB 3.2 için Azure Cosmos DB, genel dağıtım, otomatik parçalama ve yüksek kullanılabilirlik gibi kurumsal sınıf özelliklerle tanıdık MongoDB özelliklerini kullanmanızı sağlar. Bu makalede MongoDB 3.2 için Azure Cosmos DB kullanmanın desteklenen özellikleri, söz dizimi ve avantajları açıklanmaktadır.
Important
MongoDB için Azure Cosmos DB'nin 3.2 sürümünde destek sonu için geçerli bir plan yoktur. Gelecekteki destek sonlandırma bildirimi için asgari bildirim süresi üç yıldır.
Protokol Desteği
MongoDB için Azure Cosmos DB'nin tüm yeni hesapları MongoDB sunucu sürümü 3.6 ile uyumludur. Bu makalede MongoDB sürüm 3.2 ele alınır. Desteklenen işleçler ve tüm sınırlamalar veya özel durumlar burada listelenmiştir. Bu protokolleri anlayan tüm istemci sürücülerinin MongoDB için Azure Cosmos DB'ye bağlanabilmesi gerekir.
MongoDB için Azure Cosmos DB, uygun hesaplar için sorunsuz bir yükseltme deneyimi de sunar. MongoDB sürüm yükseltme kılavuzu hakkında daha fazla bilgi edinin.
Sorgu dili desteği
MongoDB için Azure Cosmos DB, MongoDB sorgu dili yapıları için kapsamlı destek sağlar. Burada ş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:
Note
Bu makalede yalnızca desteklenen sunucu komutları listelenir ve istemci tarafı sarmalayıcı işlevleri hariç tutulur. İstemci tarafı sarmalayıcı işlevler, örneğin deleteMany() ve updateMany(), dahili olarak delete() ve update() sunucu komutlarını kullanır. Desteklenen sunucu komutlarını kullanan işlevler MongoDB için Azure Cosmos DB ile uyumludur.
Sorgulama ve yazma işlemi komutları
| Destekleniyor | |
|---|---|
delete |
✅ Evet |
find |
✅ Evet |
findAndModify |
✅ Evet |
getLastError |
✅ Evet |
getMore |
✅ Evet |
insert |
✅ Evet |
update |
✅ Evet |
Kimlik doğrulama komutları
| Destekleniyor | |
|---|---|
logout |
✅ Evet |
authenticate |
✅ Evet |
getnonce |
✅ Evet |
Yönetim komutları
| Destekleniyor | |
|---|---|
dropDatabase |
✅ Evet |
listCollections |
✅ Evet |
drop |
✅ Evet |
create |
✅ Evet |
filemd5 |
✅ Evet |
createIndexes |
✅ Evet |
listIndexes |
✅ Evet |
dropIndexes |
✅ Evet |
connectionStatus |
✅ Evet |
reIndex |
✅ Evet |
Tanılama komutları
| Destekleniyor | |
|---|---|
buildInfo |
✅ Evet |
collStats |
✅ Evet |
dbStats |
✅ Evet |
hostInfo |
✅ Evet |
listDatabases |
✅ Evet |
whatsmyuri |
✅ Evet |
Toplama ardışık düzeni
Toplama komutları
| Destekleniyor | |
|---|---|
aggregate |
✅ Evet |
count |
✅ Evet |
distinct |
✅ Evet |
Toplama aşamaları
| Destekleniyor | |
|---|---|
$project |
✅ Evet |
$match |
✅ Evet |
$limit |
✅ Evet |
$skip |
✅ Evet |
$unwind |
✅ Evet |
$group |
✅ Evet |
$sample |
✅ Evet |
$sort |
✅ Evet |
$lookup |
✅ Evet |
$out |
✅ Evet |
$count |
✅ Evet |
$addFields |
✅ Evet |
Toplama ifadeleri
Mantıksal ifadeler
| Destekleniyor | |
|---|---|
$and |
✅ Evet |
$or |
✅ Evet |
$not |
✅ Evet |
Sabit ifadeler
| Destekleniyor | |
|---|---|
$setEquals |
✅ Evet |
$setIntersection |
✅ Evet |
$setUnion |
✅ Evet |
$setDifference |
✅ Evet |
$setIsSubset |
✅ Evet |
$anyElementTrue |
✅ Evet |
$allElementsTrue |
✅ Evet |
Karşılaştırma ifadeleri
| Destekleniyor | |
|---|---|
$cmp |
✅ Evet |
$eq |
✅ Evet |
$gt |
✅ Evet |
$gte |
✅ Evet |
$lt |
✅ Evet |
$lte |
✅ Evet |
$ne |
✅ Evet |
Aritmetik ifadeler
| Destekleniyor | |
|---|---|
$abs |
✅ Evet |
$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 |
✅ Evet |
Dize ifadeleri
| Destekleniyor | |
|---|---|
$concat |
✅ Evet |
$indexOfBytes |
✅ Evet |
$indexOfCP |
✅ Evet |
$split |
✅ Evet |
$strLenBytes |
✅ Evet |
$strLenCP |
✅ Evet |
$strcasecmp |
✅ Evet |
$substr |
✅ Evet |
$substrBytes |
✅ Evet |
$substrCP |
✅ Evet |
$toLower |
✅ Evet |
$toUpper |
✅ Evet |
Dizi ifadeleri
| Destekleniyor | |
|---|---|
$arrayElemAt |
✅ Evet |
$concatArrays |
✅ Evet |
$filter |
✅ Evet |
$indexOfArray |
✅ Evet |
$isArray |
✅ Evet |
$range |
✅ Evet |
$reverseArray |
✅ Evet |
$size |
✅ Evet |
$slice |
✅ Evet |
$in |
✅ Evet |
Tarih ifadeleri
| Destekleniyor | |
|---|---|
$dayOfYear |
✅ Evet |
$dayOfMonth |
✅ Evet |
$dayOfWeek |
✅ Evet |
$year |
✅ Evet |
$month |
✅ Evet |
$week |
✅ Evet |
$hour |
✅ Evet |
$minute |
✅ Evet |
$second |
✅ Evet |
$millisecond |
✅ Evet |
$isoDayOfWeek |
✅ Evet |
$isoWeek |
✅ Evet |
Koşullu ifadeler
| Destekleniyor | |
|---|---|
$cond |
✅ Evet |
$ifNull |
✅ Evet |
Toplama biriktiricileri
| Destekleniyor | |
|---|---|
$sum |
✅ Evet |
$avg |
✅ Evet |
$first |
✅ Evet |
$last |
✅ Evet |
$max |
✅ Evet |
$min |
✅ Evet |
$push |
✅ Evet |
$addToSet |
✅ Evet |
Operators
Desteklenen işleçler, bunların kullanımıyla ilgili örneklerle birlikte aşağıda verilmiştir. Buradaki sorgularda kullanılan bu örnek belgeyi göz önünde bulundurun:
{
"Volcano Name": "Rainier",
"Country": "United States",
"Region": "US-Washington",
"Location": {
"type": "Point",
"coordinates": [
-121.758,
46.87
]
},
"Elevation": 4392,
"Type": "Stratovolcano",
"Status": "Dendrochronology",
"Last Known Eruption": "Last known eruption from 1800-1899, inclusive"
}
| Destekleniyor | Example | |
|---|---|---|
eq |
✅ Evet | { "Volcano Name": { $eq: "Rainier" } } |
gt |
✅ Evet | { "Elevation": { $gt: 4000 } } |
gte |
✅ Evet | { "Elevation": { $gte: 4392 } } |
lt |
✅ Evet | { "Elevation": { $lt: 5000 } } |
lte |
✅ Evet | { "Elevation": { $lte: 5000 } } |
ne |
✅ Evet | { "Elevation": { $ne: 1 } } |
in |
✅ Evet | { "Volcano Name": { $in: ["St. Helens", "Rainier", "Glacier Peak"] } } |
nin |
✅ Evet | { "Volcano Name": { $nin: ["Lassen Peak", "Hood", "Baker"] } } |
or |
✅ Evet | { $or: [ { Elevation: { $lt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
and |
✅ Evet | { $and: [ { Elevation: { $gt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
not |
✅ Evet | { "Elevation": { $not: { $gt: 5000 } } } |
nor |
✅ Evet | { $nor: [ { "Elevation": { $lt: 4000 } }, { "Volcano Name": "Baker" } ] } |
exists |
✅ Evet | { "Status": { $exists: true } } |
type |
✅ Evet | { "Status": { $type: "string" } } |
mod |
✅ Evet | { "Elevation": { $mod: [ 4, 0 ] } } |
regex |
✅ Evet | { "Volcano Name": { $regex: "^Rain"} } |
Notlar
$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 | eklenmesi gerektiğinde, iki (veya daha fazla) regex sorgusu oluşturmak en iyisidir. Ö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 bölüm, aramayı ^abc ile başlayan belgelerle kısıtlamak için dizini kullanır ve ikinci bölüm tam girişlerle eşleşir. Çubuk işleci | bir "veya" işlevi görür - sorgu find({x:{$regex: /^abc |^def/}), alan x'nin değerlerinin "abc" veya "def" ile başladığı belgelerle eşleşir. Dizini kullanmak için sorguyu $or işleci tarafından birleştirilen iki farklı sorguya bölün: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Güncelleştirme işleçleri
Alan güncelleştirme işleçleri
| Destekleniyor | |
|---|---|
$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
| Destekleniyor | |
|---|---|
$addToSet |
✅ Evet |
$pop |
✅ Evet |
$pullAll |
✅ Evet |
$pull |
✅ Evet |
$pushAll |
✅ Evet |
$push |
✅ Evet |
$each |
✅ Evet |
$slice |
✅ Evet |
$sort |
✅ Evet |
$position |
✅ Evet |
Tip
$pull koşul ile desteklenmez.
Bit düzeyinde güncelleştirme işleci
| Destekleniyor | |
|---|---|
$bit |
✅ Evet |
Jeo-uzamsal işleçler
| Destekleniyor | Example | |
|---|---|---|
$geoWithin |
✅ Evet | { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
$geoIntersects |
✅ Evet | { "Location.coordinates": { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
$near |
✅ Evet | { "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
$nearSphere |
✅ Evet | { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
$geometry |
✅ Evet | { "Location.coordinates": { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
$minDistance |
✅ Evet | { "Location.coordinates": { $nearSphere : { $geometry: {type: "Point", coordinates: [ -121, 46 ]}, $minDistance: 1000, $maxDistance: 1000000 } } } |
$maxDistance |
✅ Evet | { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
$center |
✅ Evet | { "Location.coordinates": { $geoWithin: { $center: [ [-121, 46], 1 ] } } } |
$centerSphere |
✅ Evet | { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
$box |
✅ Evet | { "Location.coordinates": { $geoWithin: { $box: [ [ 0, 0 ], [ -122, 47 ] ] } } } |
$polygon |
✅ Evet | { "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
Sıralama İşlemleri
İşlemi kullandığınızda findOneAndUpdate , tek bir alandaki sıralama işlemleri desteklenir, ancak birden çok alandaki sıralama işlemleri desteklenmez.
Diğer işleçler
| Destekleniyor | Example | Notlar | |
|---|---|---|---|
$all |
✅ Evet | { "Location.coordinates": { $all: [-121.758, 46.87] } } |
|
$elemMatch |
✅ Evet | { "Location.coordinates": { $elemMatch: { $lt: 0 } } } |
|
$size |
✅ Evet | { "Location.coordinates": { $size: 2 } } |
|
$comment |
✅ Evet | { "Location.coordinates": { $elemMatch: { $lt: 0 } }, $comment: "Negative values"} |
|
$text |
✅ Evet | Desteklenmiyor. Bunun yerine $regex kullanın. |
Desteklenmeyen işleçler
MongoDB için Azure Cosmos DB, $where ve $eval işleçlerini desteklemez.
Methods
Aşağıdaki yöntemler desteklenir:
İmleç yöntemleri
| Destekleniyor | Example | Notlar | |
|---|---|---|---|
cursor.sort() |
✅ Evet | cursor.sort({ "Elevation": -1 }) |
Sıralama anahtarı olmayan belgeler döndürülmüyor |
Benzersiz dizinler
Azure Cosmos DB, varsayılan olarak veritabanına yazılan belgelerdeki her alanın dizinini oluşturur. Benzersiz dizinler, belirli bir alanın, varsayılan _id anahtarda benzersizliğin korunma yöntemine benzer şekilde koleksiyondaki tüm belgeler arasında yinelenen değerlere sahip olmamasını sağlar. 'benzersiz' kısıtlaması dahil olmak üzere createIndex komutunu kullanarak Azure Cosmos DB'de özel dizinler oluşturabilirsiniz.
MongoDB için Azure Cosmos DB kullanan tüm Azure Cosmos DB hesaplarında benzersiz dizinler kullanılabilir.
Etkin kalma süresi (TTL)
Azure Cosmos DB yalnızca sürüm 3.2'de koleksiyon düzeyinde (_ts) bir yaşam süresi (TTL) desteği sunar. Diğer TTL biçimlerinden yararlanmak için 3.6+ sürümlerine yükseltin.
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 ve Azure portalı (Bağlantı Dizesi sayfası) aracılığıyla elde edilebilen okuma-yazma ve salt okunur parolaları/anahtarları destekler.
Replication
Azure Cosmos DB, en düşük katmanlarda otomatik, yerel çoğaltmayı destekler. Bu mantık, düşük gecikme süreli ve küresel çoğaltma sağlamak için genişletilmiştir. Azure Cosmos DB el ile çoğaltma komutlarını desteklemez.
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ği nedeniyle tüm yazma işlemleri varsayılan olarak otomatik olarak Quorum'dur. İstemci kodu tarafından belirtilen yazma kaygısı görmezden gelinir. Daha fazla bilgi için bkz. Kullanılabilirlik ve performansı en üst düzeye çıkarmak için tutarlılık düzeylerini kullanma.
Sharding
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 , addShardve balancerStartgibi moveChunkkomutları çağırmanız gerekmez. Yalnızca kapsayıcıları oluştururken veya verileri sorgularken parça anahtarını belirtmeniz gerekir.