Bagikan melalui


Azure Cosmos DB for MongoDB (versi 3.6): fitur dan sintaks yang didukung

BERLAKU UNTUK: MongoDB

Azure Cosmos DB adalah layanan database multi-model Microsoft yang didistribusikan secara global. Anda dapat berkomunikasi dengan Azure Cosmos DB for MongoDB menggunakan salah satu driver klien MongoDB sumber terbuka. Azure Cosmos DB untuk 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 istirahat, cadangan, dan banyak lagi.

Catatan

Versi 3.6 dari Azure Cosmos DB untuk MongoDB tidak memiliki rencana saat ini untuk akhir masa pakai (EOL). Pemberitahuan minimum untuk EOL di masa depan adalah tiga tahun.

Dukungan Protokol

Azure Cosmos DB for MongoDB kompatibel dengan server MongoDB versi 3.6 secara default untuk akun baru. Operator yang didukung dan batasan atau pengecualian apa pun tercantum di bawah ini. Setiap driver klien yang memahami protokol ini harus dapat terhubung ke Azure Cosmos DB for MongoDB. Saat Anda membuat 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.

Dukungan bahasa kueri

Azure Cosmos DB for MongoDB memberikan dukungan komprehensif untuk konstruksi bahasa kueri MongoDB. Bagian berikut menunjukkan daftar terperinci operasi server, operator, tahap, perintah, dan opsi yang saat ini didukung oleh Azure Cosmos DB.

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 Azure Cosmos DB untuk MongoDB.

Perintah database

Azure Cosmos DB for MongoDB mendukung perintah database berikut:

Perintah operasi kueri dan tulis

Perintah Didukung
change streams Ya
delete Ya
eval Tidak
find Ya
findAndModify Ya
getLastError Ya
getMore Ya
getPrevError Tidak
insert Ya
parallelCollectionScan Tidak
resetError Tidak
update Ya

Perintah autentikasi

Perintah Didukung
authenticate Ya
getnonce Ya
logout Ya

Perintah administrasi

Perintah Didukung
cloneCollectionAsCapped Tidak
collMod Tidak
connectionStatus Tidak
convertToCapped Tidak
copydb Tidak
create Ya
createIndexes Ya
currentOp Ya
drop 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
top Tidak
whatsmyuri Ya

Alur agregasi

Perintah agregasi

Perintah Didukung
aggregate Ya
count Ya
distinct 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
listSessions Tidak
lookup Sebagian
match Ya
out Ya
project Ya
redact Ya
replaceRoot Ya
replaceWith Tidak
sample Ya
skip Ya
sort Ya
sortByCount Ya
unwind Ya

Catatan

$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

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
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
$$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 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
stdDevSamp Ya

Operator penggabungan

Perintah Didukung
mergeObjects Ya

Jenis data

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 Tidak
2dsphere Ya
2d Index Tidak
Hashed Index Tidak

Properti indeks

Perintah Didukung
TTL Ya
Unique Ya
Partial Tidak
Case Insensitive Tidak
Sparse 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 | batang 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
$[\<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 Tidak
bitsAnySet Tidak
bitsAllClear Tidak
bitsAnyClear Tidak

Operator geospasial

Operator Didukung
$geoWithin Ya
$geoIntersects Ya
$near Ya
$nearSphere Ya
$geometry Ya
$minDistance Ya
$maxDistance Ya
$center Tidak
$centerSphere Tidak
$box Tidak
$polygon Tidak

Operasi pengurutan

Saat Anda menggunakan findOneAndUpdate operasi, operasi pengurutan pada satu bidang didukung, tetapi operasi pengurutan pada beberapa bidang tidak didukung.

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

Azure Cosmos DB belum mendukung penulisan yang dapat diulang. Driver klien harus menambahkan retryWrites=false ke string koneksi mereka.

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.

Manajemen pengguna dan peran

Azure Cosmos DB belum mendukung pengguna dan peran. Namun, Azure Cosmos DB mendukung kontrol akses berbasis peran Azure (Azure RBAC) serta kata sandi/kunci baca-tulis dan baca-saja yang dapat diperoleh melalui panel string koneksi di portal Microsoft Azure.

Masalah Menulis

Beberapa aplikasi mengandalkan Masalah Menulis, yang menentukan jumlah respons yang diperlukan selama operasi tulis. Karena cara Azure Cosmos DB menangani replikasi, semua tulisan secara otomatis merupakan kuorum mayoritas secara default saat menggunakan konsistensi yang kuat. Semua masalah menulis yang ditentukan oleh kode klien diabaikan. Untuk mempelajari lebih lanjut, lihat artikel Menggunakan tingkat konsistensi untuk memaksimalkan ketersediaan dan performa.

Langkah berikutnya