Megosztás a következőn keresztül:


Azure Cosmos DB a MongoDB-hez (4.2-es 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. Az Azure Cosmos DB több adatbázis API-t is kínál. 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 támogatja a meglévő ügyfélillesztők használatát a MongoDB-drótprotokollhoz való csatlakoztatással.

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 még sok mást.

Protokolltámogatás

A támogatott operátorok, valamint a korlátozások és kivételek listája ebben a cikkben található. Az ezeket a protokollokat ismerő ügyfélillesztőknek csatlakozniuk kell a MongoDB-hez készült Azure Cosmos DB-hez. Ha Azure Cosmos DB-t hoz létre MongoDB-fiókokhoz, a fiókok 3.6-os vagy újabb verziójának van egy végpontja.*.mongo.cosmos.azure.com A fiókok 3.2-es verziójának van egy végpontja.*.documents.azure.com

Feljegyzé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ó olyan függvényeket használ, mint a deleteMany() updateMany() kiszolgálói és update() a delete() kiszolgálói parancsok. 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 szerkezetekhez. A következő szakaszokban 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

Feljegyzés

A többdokumentumos tranzakciók csak egyetlen nem szegmenses gyűjteményen belül támogatottak. A többdokumentumos többdokumentumos keresztgyűjtési és horizontális tranzakciók még nem támogatottak a MongoDB API-ban.

Parancs Támogatott
abortTransaction Igen
commitTransaction 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

Az Azure Cosmos DB for MongoDB a következő összesítési parancsokat támogatja.

Ö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 Nem
group Igen
indexStats Nem
limit Igen
listLocalSessions Nem
listSessions Nem
lookup Részleges
match Igen
merge Igen
out Igen
planCacheStats Igen
project Igen
redact Igen
regexFind Igen
regexFindAll Igen
regexMatch Igen
replaceRoot Igen
replaceWith Igen
sample Igen
set Igen
skip Igen
sort Igen
sortByCount Igen
unset Igen
unwind Igen

Feljegyzés

Az $lookup összesítés még nem támogatja a 3.6-os kiszolgálói verzióban bevezetett nem javítatlan alqueries funkciót. Ha az operátort $lookup a mezőkkel let pipeline együtt próbálja használni, megjelenik egy hibaüzenet, amely azt jelzi, hogy let nem támogatott .

Logikai kifejezések

Parancs Támogatott
and Igen
not Igen
or Igen

Konverziós kifejezések

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

Halmazkifejezések

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

Összehasonlító kifejezések

Feljegyzés

A MongoDB API nem támogatja azokat az összehasonlító kifejezéseket, amelyek tömbkonstanssal rendelkeznek a lekérdezésben.

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
round Igen
sqrt Igen
subtract Igen
trunc Igen

Trigonometriai kifejezések

Parancs Támogatott
acos Igen
acosh Igen
asin Igen
asinh Igen
atan Igen
atan2 Igen
atanh Igen
cos Igen
cosh Igen
degreesToRadians Igen
radiansToDegrees Igen
sin Igen
sinh Igen
tan Igen
tanh Igen

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
$$CLUSTERTIME Igen
$$CURRENT Igen
$$DESCEND Igen
$$KEEP Igen
$$NOW 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ési operátor

Parancs Támogatott
mergeObjects Igen

Adattípusok

A MongoDB-hez készült Azure Cosmos DB támogatja a MongoDB BSON formátumban kódolt dokumentumokat. A 4.0-s és újabb verziók (4.0+) növelik a formátum 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 kihasználják ezt az optimalizálást.

Frissítési forgatókönyv esetén a 4.0+-os verzióra való frissítés előtt írt dokumentumok csak akkor lesznek jobbak, ha a 4.0-s vagy újabb végponton keresztüli írási művelettel frissítik őket.

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

A 16 MB-os dokumentumtámogatás engedélyezéséhez módosítsa az erőforrás Szolgáltatások lapján található beállítást az Azure Portalon, vagy adja hozzá programozott módon a EnableMongo16MBDocumentSupport funkciót.

Javasoljuk, hogy engedélyezze a kiszolgálóoldali újrapróbálkozásokat, és ne használjon helyettesítő indexeket, hogy a nagyobb dokumentumok kérései sikeresek legyenek. Az adatbázis- vagy gyűjteménykérési egységek emelése szintén 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 Igen

Indexek és indextulajdonságok

A MongoDB-hez készült Azure Cosmos DB az alábbi indexparancsokat és indextulajdonságokat támogatja.

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 Csak egyedi indexek esetén támogatott
Case Insensitive Nem
Sparse Nem
Background Igen

Operátorok

A MongoDB-hez készült Azure Cosmos DB a következő operátorokat támogatja.

Logikai operátorok

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

Elem operátorai

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 $regex helyette.)
where Nem

A $regex lekérdezésekben a bal horgonyzott kifejezések lehetővé teszik az indexkeresést. A módosító (kis- és nagybetűk érzéketlensége) és a m módosító (többsoros) használatával i azonban a gyűjtemény minden kifejezésben vizsgálva lesz.

Ha szükség van a lekérdezések belefoglalására $ vagy |létrehozására, érdemes két (vagy több) $regex lekérdezést létrehozni.

Módosítsa például a következő eredeti lekérdezést:

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

Ehhez a lekérdezéshez:

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

A módosított lekérdezés első része az index használatával korlátozza a keresést a következővel ^abckezdődő dokumentumokra: A lekérdezés második része megegyezik a pontos bejegyzésekkel. 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, amelyekben a mező x értékei kezdődnek vagy defkezdődnekabc. Az index használatához javasoljuk, hogy a lekérdezést két különböző lekérdezésre bontsa, amelyekhez az $or operátor csatlakozik: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Tömb operátorok

Parancs Támogatott
all Igen
elemMatch Igen
size Igen

Megjegyzés operátor

Parancs Támogatott
comment Igen

Vetítési 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

Ha a műveletet használja, az findOneAndUpdate egyetlen mező rendezési műveletei támogatottak. Több mező rendezési műveletei 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.

Ügyféloldali mezőszintű titkosítás

Az ügyfélszintű mezőtitkosítás egy illesztőprogram-funkció, amely kompatibilis a MongoDB API-val. Támogatott az explicit titkosítás, amelyben az illesztőprogram kifejezetten titkosítja az egyes mezőket, amikor meg van írva. Az automatikus titkosítás nem támogatott. Az explicit visszafejtés és az automatikus visszafejtés támogatott.

A mongocryptd futtatás nem javasolt, mert nincs szükség a támogatott műveletek végrehajtására.

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. Ez a logika az alacsony késésű globális replikáció érdekében is ki van terjesztve. Az Azure Cosmos DB nem támogatja a manuális replikációs parancsokat.

Újrapróbálkozható írások

Az újrapróbálkozási írási funkció lehetővé teszi, hogy a MongoDB-illesztőprogramok automatikusan újrapróbálkozjanak bizonyos írási műveletekre. A funkció szigorúbb követelményeket eredményez bizonyos műveletekre, amelyek megfelelnek a MongoDB protokoll követelményeinek. Ha ez a funkció engedélyezve van, a szilánkos gyűjteményekben végzett frissítési műveletekhez , beleértve a törléseket is, a szilánkkulcsnak szerepelnie kell a lekérdezésszűrőben vagy a frissítési utasításban.

Ha például egy szilánkos gyűjtemény van a kulcson "country" , a mezővel "city" = "NYC"rendelkező összes dokumentum törléséhez az alkalmazásnak végre kell hajtania a műveletet az összes szegmenskulcs ("country") érték esetében, ha az újrapróbálkozási írási funkció engedélyezve van.

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

Feljegyzés

Az újrapróbálkozható írások jelenleg nem támogatják a tömeges rendezetlen írásokat. Ha tömeges írásokat szeretne végrehajtani újrapróbálkozható írások engedélyezésével, tömegesen rendezett írásokat hajthat végre.

A funkció engedélyezéséhez adja hozzá az EnableMongoRetryableWrites képességet az adatbázisfiókhoz. Ez a funkció az 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 meghívnia az olyan parancsokat, mint az addShard, balancerStartés moveChunk. A szegmenskulcsot csak a tárolók létrehozásakor vagy az adatok lekérdezésekor kell megadnia.

Előadások

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

Élettartam

Az Azure Cosmos DB támogatja a dokumentum időbélyege alapján létrehozott élettartamot (TTL). A TTL-t az Azure Portalon engedélyezheti gyűjteményekhez.

Egyéni TTL

Ez a funkció lehetővé teszi egyéni TTL beállítását a gyűjtemény bármely mezőjére.

Olyan gyűjteményben, amelynek TTL-je engedélyezve van egy mezőben:

  • Elfogadható típusok a BSON-adattípusok és numerikus típusok (egész szám, hosszú vagy dupla), amelyeket Unix ezredmásodperc időbélyegként értelmezünk a lejárat meghatározásához.

  • Ha a TTL mező tömb, akkor a rendszer a tömb elfogadható típusú legkisebb elemét veszi figyelembe a dokumentum lejáratakor.

  • Ha a TTL mező hiányzik egy dokumentumból, a dokumentum nem jár le.

  • Ha a TTL mező nem elfogadható típus, a dokumentum nem jár le.

Egyéni TTL korlátozásai

  • A gyűjteményben csak egy mező rendelkezhet TTL-beállítással.

  • Egyéni TTL-mezőkészlet esetén a \_ts mező nem használható a dokumentum lejáratához.

  • A mezőt nem használhatja \_ts .

Konfiguráció

Az egyéni TTL-t a fiók képességeinek frissítésével EnableTtlOnCustomPath engedélyezheti. Megtudhatja , hogyan konfigurálhatja a képességeket.

A TTL beállítása

A TTL beállításához futtassa a következő parancsot: db.coll.createIndex({"YOUR_CUSTOM_TTL_FIELD":1}, {expireAfterSeconds: 10})

Tranzakciók

A többdokumentumos tranzakciók egy nem horizontális gyűjteményen belül támogatottak. A többdokumentumos tranzakciók nem támogatottak a gyűjteményekben és a szegmenses gyűjteményekben. A tranzakciók időtúllépése rögzített 5 másodperc.

Felhasználók és szerepkörök kezelése

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ést (Azure RBAC), valamint az Azure Portalon (a Kapcsolati sztringek lapon) beszerezhető írási és írásvédett jelszavakat és kulcsokat.

Írási problémák

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 háttérben a replikációt, az összes írás alapértelmezés szerint automatikusan kvórum lesz. Az ügyfélkód által megadott írási aggodalmak figyelmen kívül lesznek hagyva. Megtudhatja, hogyan használhat konzisztenciaszinteket a rendelkezésre állás és a teljesítmény maximalizálásához.

Következő lépések

  • Megtudhatja, hogyan használhatja a Studio 3T-t a MongoDB-hez készült Azure Cosmos DB-vel.
  • Megtudhatja, hogyan használhatja a Robo 3T-t a MongoDB-hez készült Azure Cosmos DB-vel.
  • Megismerheti a MongoDB-mintákat a MongoDB-hez készült Azure Cosmos DB-vel.
  • Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
    • Ha csak a meglévő adatbázisfürt virtuális magjainak és kiszolgálóinak számát ismeri, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával.
    • Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervező használatával.