MongoDB-hez készült Azure Cosmos DB (3.6-os 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 nyújtott ö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.

Megjegyzés

A MongoDB-hez készült Azure Cosmos DB 3.6-os verziója nem rendelkezik az élettartam megszűnésére (EOL) vonatkozó jelenlegi tervekkel. A jövőbeli EOL minimális értesítése három év.

Protokolltámogatás

A MongoDB-hez készült Azure Cosmos DB alapértelmezés szerint kompatibilis a MongoDB-kiszolgáló 3.6-os verziójával az új fiókok esetében. 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 API-t, a fiók 3.6-os verziójában a végpont formátuma *.mongo.cosmos.azure.com , míg a fiók 3.2-es verziója a végpont formátumában *.documents.azure.comtalálható.

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ábbi szakaszok az Azure Cosmos DB által jelenleg támogatott kiszolgálóműveletek, operátorok, szakaszok, parancsok és beállítások részletes listáját mutatják be.

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ófüggvények, 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.

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

Hitelesítési parancsok

Parancs Támogatott
authenticate Igen
getnonce Igen
logout Igen

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 Igen

Megjegyzés

$lookup még nem támogatja a kiszolgáló 3.6-os verziójában bevezetett nem javítatlan albekérdezések funkciót. Hibaüzenet jelenik meg, amely azt tartalmazzalet is not supported, hogy az operátort és pipeline a $lookup mezőket let használja-e.

Logikai kifejezések

Parancs Támogatott
and Igen
not Igen
or Igen

Halmazkifejezések

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

Ö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 Igen

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 Igen

Sztringkifejezések

Parancs Támogatott
concat Igen
indexOfBytes Igen
indexOfCP 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 Igen

Literál operátor

Parancs Támogatott
literal Igen

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 Igen

Feltételes kifejezések

Parancs Támogatott
cond Igen
ifNull Igen
switch Igen

Adattípus-operátor

Parancs Támogatott
type Igen

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 Igen

Egyesítés operátor

Parancs Támogatott
mergeObjects Igen

Adattípusok

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 Igen

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 Igen

Elemoperátorok

Parancs Támogatott
exists Igen
type Igen

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 bele kell foglalnia $ a vagy |a lekérdezést, 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áv operátora | "vagy" függvényként működik – a lekérdezés find({x:{$regex: /^abc |^def/}) megegyezik azokkal a dokumentumokkal"abc", amelyekben a mező x értéke vagy "def". 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 Igen

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 Igen

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

A művelet használatakor az findOneAndUpdate egyetlen mező rendezési műveletei támogatottak, de a több mezőre vonatkozó rendezési műveletek nem támogatottak.

Indexelés

A MongoDB API különböző indexeket támogat a több mező szerinti rendezés engedélyezéséhez, a lekérdezési teljesítmény javításához és az egyediség kikényszerítéséhez.

GridFS

Az Azure Cosmos DB bármely GridFS-kompatibilis MongoDB-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álkozható írások

Az Azure Cosmos DB még nem támogatja az újrapróbálkozható írásokat. Az ügyfélillesztőknek hozzá kell adniuk retryWrites=false a kapcsolati sztring.

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 tárolók létrehozása vagy az adatok lekérdezése során csak a szegmenskulcsot 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.

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

Az Azure Cosmos DB még nem támogatja a felhasználókat és a szerepköröket. Támogatja azonban az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC), valamint az írásvédett és írásvédett jelszavakat vagy kulcsokat, amelyek a Azure Portal kapcsolati sztring paneljén érhetők el.

Í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 hogyan kezeli a replikációt, az összes írás alapértelmezés szerint automatikusan többségi kvórumot hoz létre erős konzisztencia használatakor. Az ügyfélkód által megadott írási problémát a rendszer figyelmen kívül hagyja. További információ: A rendelkezésre állás és a teljesítmény maximalizálása konzisztenciaszintek használatával .

Következő lépések