Azure Cosmos DB for MongoDB (4.0 kiszolgálóverzió): támogatott funkciók és szintaxis
Cikk
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Az Azure Cosmos-adatbázis 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-drótprotokollhoz való csatlakoztatással.
A MongoDB-hez készült Azure Cosmos DB-vel élvezheti a MongoDB előnyeit, valamint 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.
Protokolltámogatás
A támogatott operátorok, valamint a korlátozások és kivételek listája alább található. Az ezeket a protokollokat ismerő ügyfélillesztőknek csatlakozniuk kell a MongoDB-hez készült Azure Cosmos DB-hez. Amikor Azure Cosmos DB-t hoz létre MongoDB-fiókokhoz, a fiókok 3.6-os verzióiban a végpont formátuma *.mongo.cosmos.azure.com a végpont, míg a 3.2-es verziójú fiókok végpontja a formátum *.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 funkciókkal rendelkezik, mint a deleteMany() belső és updateMany()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. Az alábbiakban a jelenleg támogatott műveletek, operátorok, szakaszok, parancsok és beállítások részletes listáját találja.
Adatbázisparancsok
A MongoDB-hez készült Azure Cosmos DB a következő adatbázis-parancsokat támogatja:
A MongoDB API nem támogatja a tömbkonstanssal rendelkező összehasonlító kifejezéseket 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
sqrt
Igen
subtract
Igen
trunc
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
$$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é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 API-verzió javítja 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 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 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.
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érelmek 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
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
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 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ést kell tartalmaznia, a legjobb, ha két (vagy több) regex lekérdezést hoz létre. A következő eredeti lekérdezést find({x:{$regex: /^abc$/})például a következőképpen kell módosítani:
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ö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 a findOneAndUpdate MongoDB 4.0-s verziójához készült API-val használja, a rendszer egyetlen mező és több mező rendezési műveleteit támogatja. A több mezőn végzett rendezési műveletek a korábbi drótprotokollok korlátozását tették ki.
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 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álkozható írások
Az újrapróbálkozási í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 szilánkos gyűjteményekben végzett frissítési műveletekhez , beleértve a törléseket is, a szegmenskulcsot hozzá kell adni a lekérdezésszűrőhöz vagy a frissítési utasításhoz.
Például egy "country" kulcsra szilánkos gyűjtemény esetén: Ha a mezővárossal = "NYC"rendelkező összes dokumentumot törölni szeretné, az alkalmazásnak végre kell hajtania a műveletet az összes szegmenskulcs (ország) érték esetében, ha engedélyezve vannak az újrapróbálkozási írások.
db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Siker
Az újrapróbálkozható írások jelenleg nem támogatják a tömeges rendezetlen írásokat. Ha tömeges írásokat szeretne végezni újrapróbálkozható írások engedélyezésével, tömegesen rendezett írásokat hajthat végre.
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 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.
Előadások
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ő az Azure Portalról származó gyűjteményekhez.
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ó- é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 az Azure Portalon (Kapcsolati sztringoldalon) beszerezhető írási és írásvédett 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, 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. 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
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 annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, 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ővel