API Azure Cosmos DB untuk MongoDB (versi server 4.2): fitur dan sintaks yang didukung
Artikel
9 menit untuk membaca
BERLAKU UNTUK: API Azure Cosmos DB untuk MongoDB
Azure Cosmos DB adalah layanan database multi-model Microsoft yang didistribusikan secara global, menawarkan beberapa API database. Anda dapat berkomunikasi dengan API Azure Cosmos DB untuk MongoDB menggunakan salah satu driver klien MongoDB sumber terbuka. Azure Cosmos DB API untuk MongoDB memungkinkan penggunaan driver klien yang ada dengan mengikuti protokol kabel MongoDB.
Dengan menggunakan API Azure Cosmos DB untuk MongoDB, Anda dapat menikmati manfaat MongoDB yang biasa Anda gunakan, dengan semua kemampuan perusahaan yang disediakan Cosmos DB: distribusi global, sharding otomatis, jaminan ketersediaan dan latensi, enkripsi saat tidak aktif, pencadangan, dan banyak lagi.
Dukungan Protokol
Operator yang didukung dan batasan atau pengecualian apa pun tercantum di bawah ini. Setiap driver klien yang memahami protokol ini harus dapat terhubung ke API Azure Cosmos DB untuk MongoDB. Saat menggunakan API 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 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 API Azure Cosmos DB untuk MongoDB.
Dukungan bahasa kueri
API Azure Cosmos DB untuk 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
API Azure Cosmos DB untuk MongoDB mendukung perintah database berikut:
Transaksi multi-dokumen hanya didukung dalam koleksi tunggal yang tidak di-shard. Transaksi multi-dokumen lintas-koleksi dan lintas-shard belum didukung di API untuk MongoDB.
Perintah
Didukung
abortTransaction
Ya
commitTransaction
Ya
Perintah autentikasi
Perintah
Didukung
autentikasi
Ya
getnonce
Ya
keluar
Ya
Perintah administrasi
Perintah
Didukung
cloneCollectionAsCapped
Tidak
collMod
Tidak
connectionStatus
Tidak
convertToCapped
Tidak
copydb
Tidak
buat
Ya
createIndexes
Ya
currentOp
Ya
hilangkan
Ya
dropDatabase
Ya
dropIndexes
Ya
filemd5
Ya
killCursors
Ya
killOp
Tidak
listCollections
Ya
listDatabases
Ya
listIndexes
Ya
reIndex
Ya
renameCollection
Tidak
Perintah diagnostik
Perintah
Didukung
buildInfo
Ya
collStats
Ya
connPoolStats
Tidak
connectionStatus
Tidak
dataSize
Tidak
dbHash
Tidak
dbStats
Ya
explain
Ya
features
Tidak
hostInfo
Ya
listDatabases
Ya
listCommands
Tidak
profiler
Tidak
serverStatus
Tidak
teratas
Tidak
whatsmyuri
Ya
Alur agregasi
Perintah agregasi
Perintah
Didukung
agregat
Ya
hitung
Ya
berbeda
Ya
mapReduce
Tidak
Tahap agregasi
Perintah
Didukung
$addFields
Ya
$bucket
Tidak
$bucketAuto
Tidak
$changeStream
Ya
$collStats
Tidak
$count
Ya
$currentOp
Tidak
$facet
Ya
$geoNear
Ya
$graphLookup
Ya
$group
Ya
$indexStats
Tidak
$limit
Ya
$listLocalSessions
Tidak
$listLocalSessions
Tidak
$lookup
Sebagian
$match
Ya
$merge
Ya
$out
Ya
$planCacheStats
Ya
$project
Ya
$redact
Ya
$regexFind
Ya
$regexFindAll
Ya
$regexMatch
Ya
$replaceRoot
Ya
$replaceWith
Ya
$sample
Ya
$set
Ya
$skip
Ya
$sort
Ya
$sortByCount
Ya
$unset
Ya
$unwind
Ya
Catatan
Agregasi $lookup belum mendukung fitur subkueri tidak berkorelasi 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
$lt
Ya
$ne
Ya
$in
Ya
$in
Ya
Ekspresi aritmetika
Perintah
Didukung
$abs
Ya
$add
Ya
$ceil
Ya
$divide
Ya
$exp
Ya
$floor
Ya
$ln
Ya
$log
Ya
$log 10
Ya
$mod
Ya
$multiply
Ya
$pow
Ya
$round
Ya
$sqrt
Ya
$subtract
Ya
$trunc
Ya
Ekspresi trigonometri
Perintah
Didukung
$acos
Ya
$acosh
Ya
$asin
Ya
$asinh
Ya
$atan
Ya
$atan2
Ya
$atanh
Ya
$cos
Ya
$cosh
Ya
$degreesToRadians
Ya
$radiansToDegrees
Ya
$sin
Ya
$sinh
Ya
$tan
Ya
$tanh
Ya
Ekspresi string
Perintah
Didukung
$concat
Ya
$indexOfBytes
Ya
$indexOfCP
Ya
$ltrim
Ya
$ltrim
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
Tidak
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
$$CLUSTERTIME
Ya
$$CURRENT
Ya
$$DESCEND
Ya
$$KEEP
Ya
$$NOW
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
$dateFromParts
Ya
$dateFromString
Ya
$isoWeekYear
Ya
Ekspresi kondisional
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
$stdDevPop
Ya
Operator penggabungan
Perintah
Didukung
$mergeObjects
Ya
Jenis data
API Azure Cosmos DB untuk MongoDB mendukung dokumen yang dikodekan dalam format BSON MongoDB. Versi API 4.2 meningkatkan penggunaan internal format ini untuk meningkatkan performa dan mengurangi biaya. Dokumen yang ditulis atau diperbarui melalui titik akhir yang menjalankan 4.2 mendapat manfaat dari ini.
Dalam skenario peningkatan, dokumen yang ditulis sebelum peningkatan ke versi 4.2 tidak akan mendapat manfaat dari peningkatan performa sampai diperbarui melalui operasi tulis melalui titik akhir 4.2.
Perintah
Didukung
Double
Ya
String
Ya
Objek
Ya
Array
Ya
Binary Data
Ya
ObjectId
Ya
Boolean
Ya
Tanggal
Ya
Null
Ya
32-bit Integer (int)
Ya
Tanda waktu
Ya
64-bit Integer (long)
Ya
MinKey
Ya
MaxKey
Ya
Decimal128
Ya
Ekspresi Reguler
Ya
JavaScript
Ya
JavaScript (dengan lingkup)
Ya
Tidak ditentukan
Ya
Indeks dan properti indeks
Indeks
Perintah
Didukung
Single Field Index
Ya
Compound Index
Ya
Multikey Index
Ya
Text Index
Tidak
2dsphere
Ya
2d Index
Tidak
Hashed Index
Ya
Properti indeks
Perintah
Didukung
TTL
Ya
Unik
Ya
Sebagian
Hanya didukung dengan indeks unik
Case Insensitive
Tidak
Jarang
Tidak
Background
Ya
Operator
Operator logika
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
Tidak
$mod
Ya
$regex
Ya
$text
Tidak (Tidak didukung. Gunakan $regex sebagai gantinya.)
$where
Tidak
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.
Ketika ada kebutuhan untuk 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 "atau" - 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
Tidak
$slice
Ya
Perbarui operator
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
$[<Pengidentifikasi>]
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
Tidak
$bitsAllSet
Tidak
$bitsAllClear
Tidak
$bitsAllClear
Tidak
Operator geospasial
Operator
Didukung
$geoWithin
Ya
$geoIntersects
Ya
$dekat
Ya
$nearSphere
Ya
$geometry
Ya
$minDistance
Ya
$minDistance
Ya
$center
Tidak
$centerSphere
Tidak
$box
Tidak
$polygon
Tidak
Operasi pengurutan
Ketika menggunakan operasi findOneAndUpdate, operasi pengurutan pada satu bidang didukung tetapi operasi pengurutan pada beberapa bidang tidak didukung.
Pengindeksan
API untuk MongoDB mendukung berbagai indeks untuk memungkinkan pengurutan pada beberapa bidang, meningkatkan kinerja kueri, dan menerapkan keunikan.
Enkripsi tingkat bidang sisi klien
Enkripsi bidang tingkat klien adalah fitur driver dan kompatibel dengan API untuk MongoDB. Enkripsi eksplisit - apakah driver secara eksplisit mengenkripsi setiap bidang saat ditulis didukung. Enkripsi otomatis tidak didukung. Dekripsi eksplisit dan dekripsi otomatis didukung.
Mongocryptd tidak boleh dijalankan karena tidak diperlukan untuk melakukan operasi yang didukung.
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. Cosmos DB tidak mendukung perintah replikasi manual.
Penulisan yang Dapat Coba Kembali
Azure Cosmos DB belum mendukung penulisan yang dapat dicocokkan kembali. Driver klien harus menambahkan parameter URL 'retryWrites=false' ke string koneksi mereka. Parameter URL lainnya dapat ditambahkan dengan menambahkan prefiks dengan '&'.
Sharding
Azure Cosmos DB mendukung pecahan sisi server otomatis. 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 di-sharding. 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 Microsoft Azure (halaman String Koneksi).
Masalah Menulis
Beberapa aplikasi mengandalkan Masalah Menulis, yang menentukan jumlah respons yang diperlukan selama operasi tulis. Karena bagaimana Cosmos DB menangani replikasi di latar belakang semua tulisan semuanya secara otomatis Kuorum secara default. Setiap masalah tulis yang ditentukan oleh kode klien diabaikan. Pelajari lebih lanjut dalam Menggunakan tingkat konsistensi untuk memaksimalkan ketersediaan dan performa.
Jelajahi sampel MongoDB dengan API 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 perencanaan kapasitas.