MongoDB-hez készült Azure Cosmos DB (4.0-s kiszolgálóverzió): támogatott funkciók és szintaxis

A KÖVETKEZŐKRE VONATKOZIK: MongoDB

Az Azure Cosmos DB a Microsoft globálisan elosztott többmodelles adatbázis-szolgáltatása. A MongoDB-hez készült Azure Cosmos DB-vel a nyílt forráskódú MongoDB-ügyfélillesztők bármelyikével kommunikálhat. A MongoDB-hez készült Azure Cosmos DB lehetővé teszi a meglévő ügyfélillesztők használatát a MongoDB vezetékes protokolljának betartásával.

A MongoDB-hez készült Azure Cosmos DB-vel élvezheti a mongoDB előnyeit, és élvezheti az Azure Cosmos DB által biztosított összes vállalati képességet: globális elosztást, automatikus horizontális skálázást, rendelkezésre állási és késési garanciákat, inaktív titkosítást, biztonsági mentéseket és sok mást.

Protokolltámogatás

A támogatott operátorok, valamint a korlátozások és kivételek listája alább található. Az ilyen protokollokat megértő ügyfélillesztőknek csatlakozniuk kell a MongoDB-hez készült Azure Cosmos DB-hez. Amikor MongoDB-fiókokhoz hoz létre Azure Cosmos DB-t, a fiókok 3.6-os vagy újabb verzióiban a végpont formátuma *.mongo.cosmos.azure.com a végpont, míg a fiókok 3.2-es verziója a végpont formátumát *.documents.azure.comtartalmazza.

Megjegyzés

Ez a cikk csak a támogatott kiszolgálóparancsokat sorolja fel, és kizárja az ügyféloldali burkolófüggvényeket. Az ügyféloldali burkolófunkciók, például deleteMany() a és updateMany()update() a kiszolgáló parancsainak delete() belső használata. A támogatott kiszolgálóparancsokat használó függvények kompatibilisek a MongoDB-hez készült Azure Cosmos DB-vel.

Lekérdezési nyelv támogatása

A MongoDB-hez készült Azure Cosmos DB átfogó támogatást nyújt a MongoDB lekérdezési nyelvi szerkezeteihez. Az alábbiakban megtalálja a jelenleg támogatott műveletek, operátorok, szakaszok, parancsok és beállítások részletes listáját.

Adatbázisparancsok

A MongoDB-hez készült Azure Cosmos DB a következő adatbázis-parancsokat támogatja:

Lekérdezési és írási műveletek parancsai

Parancs Támogatott
change streams Igen
delete Igen
eval Nem
find Igen
findAndModify Igen
getLastError Igen
getMore Igen
getPrevError Nem
insert Igen
parallelCollectionScan Nem
resetError Nem
update Igen

Tranzakciós parancsok

Parancs Támogatott
abortTransaction Igen
commitTransaction Yes

Hitelesítési parancsok

Parancs Támogatott
authenticate Igen
getnonce Igen
logout Yes

Adminisztrációs parancsok

Parancs Támogatott
cloneCollectionAsCapped Nem
collMod Nem
connectionStatus Nem
convertToCapped Nem
copydb Nem
create Igen
createIndexes Igen
currentOp Igen
drop Igen
dropDatabase Igen
dropIndexes Igen
filemd5 Igen
killCursors Igen
killOp Nem
listCollections Igen
listDatabases Igen
listIndexes Igen
reIndex Igen
renameCollection Nem

Diagnosztikai parancsok

Parancs Támogatott
buildInfo Igen
collStats Igen
connPoolStats Nem
connectionStatus Nem
dataSize Nem
dbHash Nem
dbStats Igen
explain Igen
features Nem
hostInfo Igen
listDatabases Igen
listCommands Nem
profiler Nem
serverStatus Nem
top Nem
whatsmyuri Igen

Összesítési folyamat

Összesítési parancsok

Parancs Támogatott
aggregate Igen
count Igen
distinct Igen
mapReduce Nem

Összesítési fázisok

Parancs Támogatott
addFields Igen
bucket Nem
bucketAuto Nem
changeStream Igen
collStats Nem
count Igen
currentOp Nem
facet Igen
geoNear Igen
graphLookup Igen
group Igen
indexStats Nem
limit Igen
listLocalSessions Nem
listSessions Nem
lookup Részleges
match Igen
out Igen
project Igen
redact Igen
replaceRoot Igen
replaceWith Nem
sample Igen
skip Igen
sort Igen
sortByCount Igen
unwind Yes

Megjegyzés

$lookup még nem támogatja a kiszolgáló 3.6-os verziójában bevezetett nem javítatlan részbekérdezések funkciót. Hibaüzenet jelenik meg, amely let is not supported tartalmazza, ha az operátort a és pipeline mezőkkel $lookuplet próbálja használni.

Logikai kifejezések

Parancs Támogatott
and Igen
not Igen
or Yes

Konverziós kifejezések

Parancs Támogatott
convert Igen
toBool Igen
toDate Igen
toDecimal Igen
toDouble Igen
toInt Igen
toLong Igen
toObjectId Igen
toString Yes

Halmazkifejezések

Parancs Támogatott
setEquals Igen
setIntersection Igen
setUnion Igen
setDifference Igen
setIsSubset Igen
anyElementTrue Igen
allElementsTrue Yes

Összehasonlító kifejezések

Megjegyzés

A MongoDB API nem támogatja a lekérdezésben tömbkonstanssal rendelkező összehasonlító kifejezéseket.

Parancs Támogatott
cmp Igen
eq Igen
gt Igen
gte Igen
lt Igen
lte Igen
ne Igen
in Igen
nin Yes

Aritmetikai kifejezések

Parancs Támogatott
abs Igen
add Igen
ceil Igen
divide Igen
exp Igen
floor Igen
ln Igen
log Igen
log10 Igen
mod Igen
multiply Igen
pow Igen
sqrt Igen
subtract Igen
trunc Yes

Sztringkifejezések

Parancs Támogatott
concat Igen
indexOfBytes Igen
indexOfCP Igen
ltrim Igen
rtrim Igen
trim Igen
split Igen
strLenBytes Igen
strLenCP Igen
strcasecmp Igen
substr Igen
substrBytes Igen
substrCP Igen
toLower Igen
toUpper Igen

Szövegkeresési operátor

Parancs Támogatott
meta Nem

Tömbkifejezések

Parancs Támogatott
arrayElemAt Igen
arrayToObject Igen
concatArrays Igen
filter Igen
indexOfArray Igen
isArray Igen
objectToArray Igen
range Igen
reverseArray Igen
reduce Igen
size Igen
slice Igen
zip Igen
in Igen

Változó operátorok

Parancs Támogatott
map Igen
let Igen

Rendszerváltozók

Parancs Támogatott
$$CURRENT Igen
$$DESCEND Igen
$$KEEP Igen
$$PRUNE Igen
$$REMOVE Igen
$$ROOT Yes

Literál operátor

Parancs Támogatott
literal Yes

Dátumkifejezések

Parancs Támogatott
dayOfYear Igen
dayOfMonth Igen
dayOfWeek Igen
year Igen
month Igen
week Igen
hour Igen
minute Igen
second Igen
millisecond Igen
dateToString Igen
isoDayOfWeek Igen
isoWeek Igen
dateFromParts Igen
dateToParts Igen
dateFromString Igen
isoWeekYear Yes

Feltételes kifejezések

Parancs Támogatott
cond Igen
ifNull Igen
switch Yes

Adattípus-operátor

Parancs Támogatott
type Yes

Gyűjtőkifejezések

Parancs Támogatott
sum Igen
avg Igen
first Igen
last Igen
max Igen
min Igen
push Igen
addToSet Igen
stdDevPop Igen
stdDevSamp Yes

Egyesítési operátor

Parancs Támogatott
mergeObjects Yes

Adattípusok

A MongoDB-hez készült Azure Cosmos DB támogatja a MongoDB BSON formátumban kódolt dokumentumokat. A 4.0 API-verzió javítja ennek a formátumnak a belső használatát a teljesítmény javítása és a költségek csökkentése érdekében. A 4.0-s vagy újabb verziójú végponton keresztül írt vagy frissített dokumentumok az optimalizálás előnyeit élvezik.

Frissítési forgatókönyv esetén a 4.0-s vagy újabb verzióra való frissítés előtt írt dokumentumok nem lesznek előnyösek a továbbfejlesztett teljesítményből, amíg a 4.0-s vagy újabb végponton keresztüli írási művelettel nem frissülnek.

A 16 MB-os dokumentumtámogatás 2 MB-ról 16 MB-ra növeli a dokumentumok méretkorlátját. Ez a korlát csak a funkció engedélyezését követően létrehozott gyűjteményekre vonatkozik. Ha a funkciót engedélyezi az adatbázisfiókjához, többé nem tilthatja le.

A 16 MB engedélyezése a Azure Portal funkciók lapján vagy programozott módon végezhető el az "EnableMongo16MBDocumentSupport" képesség hozzáadásával.

Javasoljuk, hogy engedélyezze a kiszolgálóoldali újrapróbálkozást, és kerülje a helyettesítő karakterek indexeit, hogy a nagyobb dokumentumokkal rendelkező kérések sikeresek legyenek. Szükség esetén a db/gyűjtemény kérelemegységek emelése is segíthet a teljesítményben.

Parancs Támogatott
Double Igen
String Igen
Object Igen
Array Igen
Binary Data Igen
ObjectId Igen
Boolean Igen
Date Igen
Null Igen
32-bit Integer (int) Igen
Timestamp Igen
64-bit Integer (long) Igen
MinKey Igen
MaxKey Igen
Decimal128 Igen
Regular Expression Igen
JavaScript Igen
JavaScript (with scope) Igen
Undefined Yes

Indexek és indextulajdonságok

Indexek

Parancs Támogatott
Single Field Index Igen
Compound Index Igen
Multikey Index Igen
Text Index Nem
2dsphere Igen
2d Index Nem
Hashed Index Nem

Indextulajdonságok

Parancs Támogatott
TTL Igen
Unique Igen
Partial Nem
Case Insensitive Nem
Sparse Nem
Background Igen

Operátorok

Logikai operátorok

Parancs Támogatott
or Igen
and Igen
not Igen
nor Yes

Elemoperátorok

Parancs Támogatott
exists Igen
type Yes

Kiértékelési lekérdezés operátorai

Parancs Támogatott
expr Igen
jsonSchema Nem
mod Igen
regex Igen
text Nem (Nem támogatott. Használja inkább a $regex.)
where Nem

A $regex lekérdezésekben a bal horgonyzott kifejezések lehetővé teszik az indexkeresést. Azonban az „i” módosító (kis- és nagybetűk megkülönböztetése nélkül) és az „m” módosító (többsoros) használatakor a gyűjtemény az összes kifejezésben keres.

Ha "$" vagy "|" lekérdezésre van szükség, a legjobb, ha két (vagy több) regex lekérdezést hoz létre. A következő eredeti lekérdezést például a következőképpen kell módosítani: find({x:{$regex: /^abc$/})

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

Az első rész az indexet fogja használni a keresés ^abc kezdetű dokumentumokra való korlátozásához, a második rész pedig meg fogja feleltetni a pontos bejegyzéseket. A „|” sávoperátor „vagy” függvényként működik – a(z) find({x:{$regex: /^abc |^def/}) lekérdezés megfelelteti azokat a dokumentumokat, amelyekben az „x” mezőben „abc” vagy „def” sztringgel kezdődő értékek találhatók. Az index használatához ajánlott a lekérdezést két külön lekérdezésre bontani, amelyeket az $or operátor kapcsol össze: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Tömboperátorok

Parancs Támogatott
all Igen
elemMatch Igen
size Igen

Megjegyzés operátor

Parancs Támogatott
comment Igen

Vetületi operátorok

Parancs Támogatott
elemMatch Igen
meta Nem
slice Igen

Frissítési operátorok

Mezőfrissítő operátorok

Parancs Támogatott
inc Igen
mul Igen
rename Igen
setOnInsert Igen
set Igen
unset Igen
min Igen
max Igen
currentDate Yes

Tömbfrissítő operátorok

Parancs Támogatott
$ Igen
$[] Igen
$[\<identifier\>] Igen
addToSet Igen
pop Igen
pullAll Igen
pull Igen
push Igen
pushAll Igen

Módosítók frissítése

Parancs Támogatott
each Igen
slice Igen
sort Igen
position Yes

Bitenként frissítő operátor

Parancs Támogatott
bit Igen
bitsAllSet Nem
bitsAnySet Nem
bitsAllClear Nem
bitsAnyClear Nem

Térinformatikai operátorok

Operátor Támogatott
$geoWithin Igen
$geoIntersects Igen
$near Igen
$nearSphere Igen
$geometry Igen
$minDistance Igen
$maxDistance Igen
$center Nem
$centerSphere Nem
$box Nem
$polygon Nem

Rendezési műveletek

Ha a műveletet a findOneAndUpdate MongoDB 4.0-s verziójához készült API-val használja, a rendezési műveletek egyetlen mezőn és több mezőn támogatottak. A több mezőre vonatkozó rendezési műveletek a korábbi drótprotokollok korlátozásai voltak.

Indexelés

A MongoDB API különböző indexeket támogat a több mező szerinti rendezés, a lekérdezési teljesítmény javítása és az egyediség kényszerítése érdekében.

GridFS

Az Azure Cosmos DB bármely GridFS-kompatibilis Mongo-illesztőprogramon keresztül támogatja a GridFS-t.

Replikáció

Az Azure Cosmos DB támogatja az automatikus natív replikációt a legalsó rétegeken. A rendszer az alacsony késésű, globális replikáció elérése érdekében kiterjeszti ezt a logikát. Az Azure Cosmos DB nem támogatja a manuális replikációs parancsokat.

Újrapróbálható írások

Az újrapróbálható írások lehetővé teszik, hogy a MongoDB-illesztőprogramok automatikusan újrapróbálkozhassanak bizonyos írási műveletekre, ha hiba történt, de bizonyos műveletekre szigorúbb követelményeket eredményeznek, amelyek megfelelnek a MongoDB protokoll követelményeinek. Ha ez a funkció engedélyezve van, a horizontálisan skálázott gyűjteményekben végzett frissítési műveletekhez a szegmenskulcsot hozzá kell adni a lekérdezésszűrőhöz vagy a frissítési utasításhoz.

Például egy horizontálisan skálázott gyűjtemény esetében, amely a "country" kulcsra van skálázva: A mező városával = "NYC" rendelkező összes dokumentum törléséhez az alkalmazásnak végre kell hajtania a műveletet az összes szegmenskulcs (ország) érték esetében, ha az újrapróbálható írások engedélyezve vannak.

  • db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Siker
  • db.coll.deleteMany({"city": "NYC"})ShardKeyNotFound(61) hibával meghiúsul

Megjegyzés

Az újrapróbálható írások jelenleg nem támogatják a tömeges rendezetlen írásokat. Ha tömeges írásokat szeretne végezni, és engedélyezve vannak az újrapróbálható írások, tömegesen rendezett írásokat kell végrehajtania.

A funkció engedélyezéséhez adja hozzá az EnableMongoRetryableWrites képességet az adatbázisfiókhoz. Ez a funkció a Azure Portal szolgáltatások lapján is engedélyezhető.

Sharding

Az Azure Cosmos DB támogatja az automatikus, kiszolgálóoldali horizontális skálázást. Automatikusan kezeli a szegmensek létrehozását, elhelyezését és kiegyensúlyozását. Az Azure Cosmos DB nem támogatja a manuális horizontális skálázási parancsokat, ami azt jelenti, hogy nem kell olyan parancsokat meghívnia, mint az addShard, balancerStart, moveChunk stb. A szegmenskulcsot csak a tárolók létrehozása vagy az adatok lekérdezése során kell megadnia.

Munkamenetek

Az Azure Cosmos DB még nem támogatja a kiszolgálóoldali munkamenetek parancsait.

Élettartam (TTL)

Az Azure Cosmos DB támogatja az élettartamot (TTL) a dokumentum időbélyege alapján. A TTL engedélyezhető a Azure Portal gyűjteményeihez.

Tranzakciók

A többdokumentumos tranzakciókat a nem horizontálisan skálázott gyűjtemények támogatják. A többdokumentumos tranzakciók nem támogatottak a gyűjteményekben és a horizontálisan skálázott gyűjteményekben. A tranzakciók időtúllépése rögzített 5 másodperc.

Felhasználó- és szerepkörkezelés

Az Azure Cosmos DB még nem támogatja a felhasználókat és a szerepköröket. Az Azure Cosmos DB azonban támogatja az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC), valamint a Azure Portal (Kapcsolati sztring) oldalon keresztül beszerezhető írási és írási és írási jelszavakat/kulcsokat.

Írási szempont

Egyes alkalmazások írási problémára támaszkodnak, amely meghatározza az írási művelet során szükséges válaszok számát. Mivel az Azure Cosmos DB a háttérben kezeli a replikációt, alapértelmezés szerint minden írás automatikusan kvórum lesz. Az ügyfélkód által megadott írási aggodalmak figyelmen kívül lesznek hagyva. További információk: A rendelkezésre állás és a teljesítmény maximalizálása a konzisztenciaszintek használatával.

Következő lépések