MongoDB-hez készült Azure Cosmos DB (4.0-s kiszolgálóverzió): támogatott funkciók és szintaxis
Cikk
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:
$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.
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
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.
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.
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ürtre vonatkozó információkat.