Azure Cosmos DB for MongoDB (3.6-os 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.
Feljegyzé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 ezeket a protokollokat ismerő ü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ója a végpontot a formátumban *.mongo.cosmos.azure.com , míg a 3.2-es verziójú fiók végpontja a formátumban *.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 szerkezetekhez. 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.
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.
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
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
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 szükség van a belefoglalásra $ , vagy |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á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ékei kezdődnek 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ö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
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 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.
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, amelyeket az Azure Portal kapcsolati sztring paneljén szerezhet be.
Í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 automatikusan többségi kvórumot ad, ha erős konzisztenciát használ. Az ügyfélkód által megadott írási aggodalmak figyelmen kívül lesznek hagyva. További információ: A rendelkezésre állás és a teljesítmény maximalizálása a konzisztenciaszintek használatával című cikk.