Azure Cosmos DB for MongoDB (5.0 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 ^abc
kezdő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 def
kezdő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"})
- Sikerdb.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.