Azure Cosmos DB untuk MongoDB (versi server 4.0): fitur dan sintaks yang didukung
Artikel
BERLAKU UNTUK: MongoDB
Azure Cosmos DB adalah layanan database multi-model Microsoft yang didistribusikan secara global. Anda dapat berkomunikasi dengan Azure Cosmos DB untuk MongoDB menggunakan salah satu driver klien MongoDB sumber terbuka. Azure Cosmos DB for MongoDB memungkinkan penggunaan driver klien yang ada dengan mematuhi protokol kawat MongoDB.
Dengan menggunakan Azure Cosmos DB for MongoDB, Anda dapat menikmati manfaat MongoDB yang biasa Anda gunakan, dengan semua kemampuan perusahaan yang disediakan Azure Cosmos DB: distribusi global, sharding otomatis, jaminan ketersediaan dan latensi, enkripsi saat tidak aktif, cadangan, dan banyak lagi.
Dukungan Protokol
Operator pendukung dan batasan atau pengecualian apa pun tercantum di bawah ini. Setiap driver klien yang memahami protokol ini harus dapat terhubung ke Azure Cosmos DB untuk MongoDB. Saat Anda membuat Azure Cosmos DB untuk akun MongoDB, akun versi 3.6+ memiliki titik akhir dalam format *.mongo.cosmos.azure.com sedangkan akun versi 3.2 memiliki titik akhir dalam format *.documents.azure.com.
Catatan
Artikel ini hanya mencantumkan perintah dari server yang didukung dan mengecualikan fungsi pembungkus sisi-klien. Fungsi pembungkus sisi klien seperti deleteMany() dan updateMany() secara internal menggunakan perintah server delete() dan update(). Fungsi yang menggunakan perintah server yang didukung kompatibel dengan Azure Cosmos DB untuk MongoDB.
Dukungan bahasa kueri
Azure Cosmos DB for MongoDB menyediakan dukungan komprehensif untuk konstruksi bahasa kueri MongoDB. Di bawah ini Anda dapat menemukan daftar terperinci operasi, operator, tahapan, perintah, dan opsi yang saat ini didukung.
Perintah database
Azure Cosmos DB for MongoDB mendukung perintah database berikut:
$lookup belum mendukung fitur subkueri tidak terkait yang diperkenalkan di server versi 3.6. Anda akan menerima kesalahan dengan pesan yang berisi let is not supported jika Anda mencoba menggunakan operator $lookup dengan let dan bidang pipeline.
Ekspresi Boolean
Perintah
Didukung
and
Ya
not
Ya
or
Ya
Ekspresi konversi
Perintah
Didukung
convert
Ya
toBool
Ya
toDate
Ya
toDecimal
Ya
toDouble
Ya
toInt
Ya
toLong
Ya
toObjectId
Ya
toString
Ya
Set Ekspresi
Perintah
Didukung
setEquals
Ya
setIntersection
Ya
setUnion
Ya
setDifference
Ya
setIsSubset
Ya
anyElementTrue
Ya
allElementsTrue
Ya
Ekspresi perbandingan
Catatan
API untuk MongoDB tidak mendukung ekspresi perbandingan dengan array literal dalam kueri.
Perintah
Didukung
cmp
Ya
eq
Ya
gt
Ya
gte
Ya
lt
Ya
lte
Ya
ne
Ya
in
Ya
nin
Ya
Ekspresi aritmetika
Perintah
Didukung
abs
Ya
add
Ya
ceil
Ya
divide
Ya
exp
Ya
floor
Ya
ln
Ya
log
Ya
log10
Ya
mod
Ya
multiply
Ya
pow
Ya
sqrt
Ya
subtract
Ya
trunc
Ya
Ekspresi string
Perintah
Didukung
concat
Ya
indexOfBytes
Ya
indexOfCP
Ya
ltrim
Ya
rtrim
Ya
trim
Ya
split
Ya
strLenBytes
Ya
strLenCP
Ya
strcasecmp
Ya
substr
Ya
substrBytes
Ya
substrCP
Ya
toLower
Ya
toUpper
Ya
Operator pencarian teks
Perintah
Didukung
meta
No
Ekspresi Array
Perintah
Didukung
arrayElemAt
Ya
arrayToObject
Ya
concatArrays
Ya
filter
Ya
indexOfArray
Ya
isArray
Ya
objectToArray
Ya
range
Ya
reverseArray
Ya
reduce
Ya
size
Ya
slice
Ya
zip
Ya
in
Ya
Operator variabel
Perintah
Didukung
map
Ya
let
Ya
Variabel sistem
Perintah
Didukung
$$CURRENT
Ya
$$DESCEND
Ya
$$KEEP
Ya
$$PRUNE
Ya
$$REMOVE
Ya
$$ROOT
Ya
Operator literal
Perintah
Didukung
literal
Ya
Ekspresi tanggal
Perintah
Didukung
dayOfYear
Ya
dayOfMonth
Ya
dayOfWeek
Ya
year
Ya
month
Ya
week
Ya
hour
Ya
minute
Ya
second
Ya
millisecond
Ya
dateToString
Ya
isoDayOfWeek
Ya
isoWeek
Ya
dateFromParts
Ya
dateToParts
Ya
dateFromString
Ya
isoWeekYear
Ya
Ekspresi bersyarat
Perintah
Didukung
cond
Ya
ifNull
Ya
switch
Ya
Operator jenis data
Perintah
Didukung
type
Ya
Ekspresi akumulator
Perintah
Didukung
sum
Ya
avg
Ya
first
Ya
last
Ya
max
Ya
min
Ya
push
Ya
addToSet
Ya
stdDevPop
Ya
stdDevSamp
Ya
Operator penggabungan
Perintah
Didukung
mergeObjects
Ya
Jenis data
Azure Cosmos DB for MongoDB mendukung dokumen yang dikodekan dalam format MongoDB BSON. API Versi 4.0 meningkatkan penggunaan internal format ini untuk meningkatkan performa dan mengurangi biaya. Dokumen yang ditulis atau diperbarui melalui titik akhir yang menjalankan 4.0+ manfaat dari pengoptimalan.
Dalam skenario peningkatan, dokumen yang ditulis sebelum peningkatan ke versi 4.0+ tidak akan mendapat manfaat dari performa yang ditingkatkan sampai diperbarui melalui operasi tulis melalui titik akhir 4.0+.
Dukungan dokumen 16 MB akan meningkatkan batas ukuran untuk dokumen Anda dari 2 MB menjadi 16 MB. Batas ini hanya berlaku bagi koleksi yang dibuat setelah fitur ini diaktifkan. Setelah fitur ini diaktifkan untuk akun database Anda, fitur ini tidak bisa dinonaktifkan.
Sebaiknya aktifkan Server Side Retry dan hindari indeks wildcard untuk memastikan permintaan dengan dokumen yang lebih besar berhasil. Jika perlu, menaikkan RU DB/Koleksi Anda juga dapat membantu performa.
Perintah
Didukung
Double
Ya
String
Ya
Object
Ya
Array
Ya
Binary Data
Ya
ObjectId
Ya
Boolean
Ya
Date
Ya
Null
Ya
32-bit Integer (int)
Ya
Timestamp
Ya
64-bit Integer (long)
Ya
MinKey
Ya
MaxKey
Ya
Decimal128
Ya
Regular Expression
Ya
JavaScript
Ya
JavaScript (with scope)
Ya
Undefined
Ya
Indeks dan properti indeks
Indeks
Perintah
Didukung
Single Field Index
Ya
Compound Index
Ya
Multikey Index
Ya
Text Index
No
2dsphere
Ya
2d Index
No
Hashed Index
Tidak
Properti indeks
Perintah
Didukung
TTL
Ya
Unique
Ya
Partial
No
Case Insensitive
No
Sparse
No
Background
Ya
Operator
Operator logis
Perintah
Didukung
or
Ya
and
Ya
not
Ya
nor
Ya
Operator elemen
Perintah
Didukung
exists
Ya
type
Ya
Operator kueri evaluasi
Perintah
Didukung
expr
Ya
jsonSchema
No
mod
Ya
regex
Ya
text
Tidak (Tidak didukung. Gunakan $regex sebagai gantinya.)
where
No
Dalam kueri $regex, ekspresi berjangkar kiri memungkinkan pencarian indeks. Namun, menggunakan pengubah 'i' (tidak peka huruf besar/kecil) dan pengubah 'm' (multibaris) menyebabkan pemindaian kumpulan di semua ekspresi.
Jika perlu menyertakan '$' atau '|', yang terbaik adalah membuat dua (atau lebih) kueri regex. Misalnya, dalam kueri asli berikut: find({x:{$regex: /^abc$/}), harus dimodifikasi sebagai berikut:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
Bagian pertama akan menggunakan indeks untuk membatasi pencarian ke dokumen yang dimulai dengan ^abc dan bagian kedua akan cocok dengan entri yang tepat. Operator bilah '|' bertindak sebagai fungsi "or" - kueri find({x:{$regex: /^abc |^def/}) cocok dengan dokumen di mana bidang 'x' memiliki nilai yang dimulai dengan "abc" atau "def". Untuk menggunakan indeks, disarankan untuk memecah kueri menjadi dua kueri berbeda yang digabungkan oleh operator $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Operator array
Perintah
Didukung
all
Ya
elemMatch
Ya
size
Ya
Operator komentar
Perintah
Didukung
comment
Ya
Operator proyeksi
Perintah
Didukung
elemMatch
Ya
meta
No
slice
Ya
Update operators
Operator pembaruan bidang
Perintah
Didukung
inc
Ya
mul
Ya
rename
Ya
setOnInsert
Ya
set
Ya
unset
Ya
min
Ya
max
Ya
currentDate
Ya
Operator pembaruan array
Perintah
Didukung
$
Ya
$[]
Ya
$[\<identifier\>]
Ya
addToSet
Ya
pop
Ya
pullAll
Ya
pull
Ya
push
Ya
pushAll
Ya
Perbarui pengubah
Perintah
Didukung
each
Ya
slice
Ya
sort
Ya
position
Ya
Operator pembaruan bitwise
Perintah
Didukung
bit
Ya
bitsAllSet
No
bitsAnySet
No
bitsAllClear
No
bitsAnyClear
Tidak
Operator geospasial
Operator
Didukung
$geoWithin
Ya
$geoIntersects
Ya
$near
Ya
$nearSphere
Ya
$geometry
Ya
$minDistance
Ya
$maxDistance
Ya
$center
No
$centerSphere
No
$box
No
$polygon
Tidak
Operasi pengurutan
Saat Anda menggunakan findOneAndUpdate operasi dengan API untuk MongoDB versi 4.0, operasi pengurutan pada satu bidang dan beberapa bidang didukung. Operasi pengurutan pada beberapa bidang adalah batasan protokol kawat sebelumnya.
Pengindeksan
API untuk MongoDB mendukung berbagai indeks untuk mengaktifkan pengurutan pada beberapa bidang, meningkatkan performa kueri, dan menerapkan keunikan.
GridFS
Azure Cosmos DB mendukung GridFS melalui driver Mongo yang kompatibel dengan GridFS.
Replikasi
Azure Cosmos DB mendukung replikasi asli otomatis pada lapisan terendah. Logika ini diperluas untuk mencapai latensi rendah, replikasi global juga. Azure Cosmos DB tidak mendukung perintah replikasi manual.
Penulisan yang Dapat Coba Kembali
Penulisan yang dapat dicoba kembali memungkinkan driver MongoDB untuk secara otomatis mencoba kembali operasi tulis tertentu jika ada kegagalan, tetapi menghasilkan persyaratan yang lebih ketat untuk operasi tertentu, yang cocok dengan persyaratan protokol MongoDB. Dengan mengaktifkan fitur ini, operasi pembaruan, termasuk penghapusan, dalam koleksi pecahan akan memerlukan kunci shard untuk disertakan dalam filter kueri atau pernyataan pembaruan.
Misalnya, dengan koleksi pecahan, dipecah pada kunci "negara": Untuk menghapus semua dokumen dengan kota = "NYC" bidang, aplikasi harus menjalankan operasi untuk semua nilai kunci shard (negara) jika Penulisan yang dapat dicoba kembali diaktifkan.
db.coll.deleteMany({"city": "NYC"}) - Gagal dengan kesalahan ShardKeyNotFound(61)
Catatan
Penulisan yang dapat diulang tidak mendukung penulisan massal yang tidak diurutkan saat ini. Jika Anda ingin melakukan penulisan massal dengan penulisan yang dapat diulang diaktifkan, lakukan penulisan yang diurutkan secara massal.
Azure Cosmos DB mendukung pemecahan otomatis, sisi server. Ini mengelola pembuatan, penempatan, dan penyeimbangan shard secara otomatis. Azure Cosmos DB tidak mendukung perintah sharding manual, yang berarti Anda tidak perlu memanggil perintah seperti addShard, balancerStart, moveChunk, dll. Anda hanya perlu menentukan kunci shard saat membuat kontainer atau mengkueri data.
Sesi
Azure Cosmos DB belum mendukung perintah sesi sisi server.
Waktu hidup (detik)
Azure Cosmos DB mendukung waktu hidup (TTL) berdasarkan tanda waktu dokumen. TTL dapat diaktifkan untuk koleksi dengan masuk ke portal Microsoft Azure.
Transaksi
Transaksi multi-dokumen didukung dalam koleksi yang tidak di-sharding. Transaksi multi-dokumen tidak didukung di seluruh koleksi atau dalam koleksi pecahan. Batas waktu transaksi adalah 5 detik tetap.
Manajemen pengguna dan peran
Azure Cosmos DB belum mendukung pengguna dan peran. Namun, Azure Cosmos DB mendukung kontrol akses berbasis peran Azure (Azure RBAC) dan kata sandi/kunci baca-tulis dan baca-saja yang dapat diperoleh melalui portal Azure (halaman String Koneksi).
Masalah Menulis
Beberapa aplikasi mengandalkan Masalah Menulis, yang menentukan jumlah respons yang diperlukan selama operasi tulis. Karena bagaimana Azure Cosmos DB menangani replikasi di latar belakang semua tulisan secara otomatis Kuorum secara default. Semua masalah menulis yang ditentukan oleh kode klien diabaikan. Pelajari lebih lanjut dalam Menggunakan tingkat konsistensi untuk memaksimalkan ketersediaan dan performa.
Jelajahi sampel MongoDB dengan Azure Cosmos DB untuk MongoDB.
Mencoba melakukan perencanaan kapasitas untuk migrasi ke Azure Cosmos DB? Anda dapat menggunakan informasi tentang kluster database Anda yang ada saat ini untuk membuat perencanaan kapasitas.