Azure Cosmos DB pro MongoDB (serverová verze 4.0): Podporované funkce a syntaxe
Článek
PLATÍ PRO: MongoDB
Azure Cosmos DB je globálně distribuovaná databázová služba Microsoftu pro více modelů. Se službou Azure Cosmos DB pro MongoDB můžete komunikovat pomocí libovolného opensourcového klientského ovladače MongoDB. Azure Cosmos DB pro MongoDB umožňuje použití existujících klientských ovladačů dodržováním přenosového protokolu MongoDB.
S využitím služby Azure Cosmos DB pro MongoDB můžete využívat výhody MongoDB, na které jste zvyklí, se všemi podnikovými funkcemi, které Azure Cosmos DB poskytuje: globální distribuce, automatické horizontální dělení, záruky dostupnosti a latence, šifrování neaktivních uložených dat, zálohování a mnoho dalšího.
Podpora protokolu
Podporované operátory a případná omezení nebo výjimky jsou uvedené níže. Každý klientský ovladač, který těmto protokolům rozumí, by měl být schopný se připojit ke službě Azure Cosmos DB pro MongoDB. Při vytváření účtů Azure Cosmos DB pro MongoDB mají účty verze 3.6 nebo novější koncový bod ve formátu *.mongo.cosmos.azure.com , zatímco účty verze 3.2 mají koncový bod ve formátu *.documents.azure.com.
Poznámka
Tento článek obsahuje pouze seznam podporovaných příkazů serveru a nezahrnuje funkce obálky na straně klienta. Funkce obálky na straně klienta, jako deleteMany() jsou a updateMany() interně využívají příkazy delete() serveru a update() . Funkce využívající podporované serverové příkazy jsou kompatibilní se službou Azure Cosmos DB pro MongoDB.
Podpora dotazovacího jazyka
Azure Cosmos DB pro MongoDB poskytuje komplexní podporu konstruktorů dotazovacího jazyka MongoDB. Níže najdete podrobný seznam aktuálně podporovaných operací, operátorů, fází, příkazů a možností.
Databázové příkazy
Azure Cosmos DB pro MongoDB podporuje následující databázové příkazy:
$lookup zatím nepodporuje funkci nekorelových poddotazů zavedenou na serveru verze 3.6. Zobrazí se chyba se zprávou, která obsahuje let is not supported , pokud se pokusíte použít $lookup operátor s let poli a pipeline .
Logické výrazy
Příkaz
Podporuje se
and
Yes
not
Yes
or
Yes
Výrazy převodu
Příkaz
Podporováno
convert
Yes
toBool
Yes
toDate
Yes
toDecimal
Yes
toDouble
Yes
toInt
Yes
toLong
Yes
toObjectId
Yes
toString
Yes
Nastavovací výrazy
Příkaz
Podporuje se
setEquals
Yes
setIntersection
Yes
setUnion
Yes
setDifference
Yes
setIsSubset
Yes
anyElementTrue
Yes
allElementsTrue
Yes
Porovnávací výrazy
Poznámka
Rozhraní API pro MongoDB nepodporuje porovnávací výrazy s literálem pole v dotazu.
Příkaz
Podporuje se
cmp
Yes
eq
Yes
gt
Yes
gte
Yes
lt
Yes
lte
Yes
ne
Yes
in
Yes
nin
Yes
Aritmetické výrazy
Příkaz
Podporuje se
abs
Yes
add
Yes
ceil
Yes
divide
Yes
exp
Yes
floor
Yes
ln
Yes
log
Yes
log10
Yes
mod
Yes
multiply
Yes
pow
Yes
sqrt
Yes
subtract
Yes
trunc
Yes
Řetězcové výrazy
Příkaz
Podporuje se
concat
Yes
indexOfBytes
Yes
indexOfCP
Yes
ltrim
Yes
rtrim
Yes
trim
Yes
split
Yes
strLenBytes
Yes
strLenCP
Yes
strcasecmp
Yes
substr
Yes
substrBytes
Yes
substrCP
Yes
toLower
Yes
toUpper
Yes
Operátor textového vyhledávání
Příkaz
Podporuje se
meta
No
Maticové výrazy
Příkaz
Podporuje se
arrayElemAt
Yes
arrayToObject
Yes
concatArrays
Yes
filter
Yes
indexOfArray
Yes
isArray
Yes
objectToArray
Yes
range
Yes
reverseArray
Yes
reduce
Yes
size
Yes
slice
Yes
zip
Yes
in
Yes
Operátory proměnných
Příkaz
Podporuje se
map
Yes
let
Yes
Systémové proměnné
Příkaz
Podporuje se
$$CURRENT
Yes
$$DESCEND
Yes
$$KEEP
Yes
$$PRUNE
Yes
$$REMOVE
Yes
$$ROOT
Yes
Operátor literálu
Příkaz
Podporováno
literal
Yes
Datumové výrazy
Příkaz
Podporováno
dayOfYear
Yes
dayOfMonth
Yes
dayOfWeek
Yes
year
Yes
month
Yes
week
Yes
hour
Yes
minute
Yes
second
Yes
millisecond
Yes
dateToString
Yes
isoDayOfWeek
Yes
isoWeek
Yes
dateFromParts
Yes
dateToParts
Yes
dateFromString
Yes
isoWeekYear
Yes
Podmíněné výrazy
Příkaz
Podporováno
cond
Yes
ifNull
Yes
switch
Yes
Operátor datového typu
Příkaz
Podporováno
type
Yes
Akumulátorové výrazy
Příkaz
Podporováno
sum
Yes
avg
Yes
first
Yes
last
Yes
max
Yes
min
Yes
push
Yes
addToSet
Yes
stdDevPop
Yes
stdDevSamp
Yes
Operátor sloučení
Příkaz
Podporováno
mergeObjects
Yes
Typy dat
Azure Cosmos DB pro MongoDB podporuje dokumenty kódované ve formátu MongoDB BSON. Verze rozhraní API 4.0 vylepšuje interní využití tohoto formátu, aby se zlepšil výkon a snížily náklady. Optimalizace přináší dokumenty napsané nebo aktualizované prostřednictvím koncového bodu se systémem verze 4.0 nebo novější.
Ve scénáři upgradu nebudou dokumenty napsané před upgradem na verzi 4.0+ těžit z vyššího výkonu, dokud se neaktualizují prostřednictvím operace zápisu prostřednictvím koncového bodu verze 4.0 nebo novější.
Podpora 16MB dokumentů zvyšuje limit velikosti dokumentů z 2 MB na 16 MB. Tento limit se vztahuje pouze na kolekce vytvořené po povolení této funkce. Jakmile se tato funkce pro váš databázový účet povolí, nedá se zakázat.
Doporučujeme povolit opakování na straně serveru a vyhnout se indexům zástupných znaků, abyste zajistili, že požadavky s většími dokumenty budou úspěšné. V případě potřeby může výkonu pomoct také zvýšení jednotek RU pro databázi nebo kolekci.
Příkaz
Podporuje se
Double
Yes
String
Yes
Object
Yes
Array
Yes
Binary Data
Yes
ObjectId
Yes
Boolean
Yes
Date
Yes
Null
Yes
32-bit Integer (int)
Yes
Timestamp
Yes
64-bit Integer (long)
Yes
MinKey
Yes
MaxKey
Yes
Decimal128
Yes
Regular Expression
Yes
JavaScript
Yes
JavaScript (with scope)
Yes
Undefined
Yes
Indexy a vlastnosti indexu
Indexy
Příkaz
Podporuje se
Single Field Index
Yes
Compound Index
Yes
Multikey Index
Yes
Text Index
No
2dsphere
Yes
2d Index
No
Hashed Index
No
Vlastnosti indexu
Příkaz
Podporuje se
TTL
Yes
Unique
Yes
Partial
No
Case Insensitive
No
Sparse
No
Background
Yes
Operátory
Logické operátory
Příkaz
Podporováno
or
Yes
and
Yes
not
Yes
nor
Yes
Operátory elementů
Příkaz
Podporováno
exists
Yes
type
Yes
Operátory zkušebních dotazů
Příkaz
Podporováno
expr
Yes
jsonSchema
No
mod
Yes
regex
Yes
text
Ne (Nepodporuje se. Místo toho použijte $regex.)
where
No
V $regex dotazech umožňují výrazy ukotvené vlevo vyhledávání indexů. Použití modifikátorů „i“ (rozlišování malých a velkých písmen) a „m“ (více řádků) ale způsobí, že se kolekce prohledává ve všech výrazech.
Pokud je potřeba zahrnout $nebo |, je nejlepší vytvořit dva (nebo více) dotazů regex. Například u následujícího původního dotazu je find({x:{$regex: /^abc$/})nutné ho upravit následujícím způsobem:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
V první části se použije index k omezení hledání na dokumenty, které začínají na ^abc a ve druhé části se porovnají přesné položky. Operátor „|“ se chová jako funkce „nebo“ – dotaz find({x:{$regex: /^abc |^def/}) porovnává dokumenty, ve kterých pole „x“ nabývá hodnot, které začínají na „abc“ nebo „def“. Pokud chcete využít index, je doporučeno dotaz rozdělit na dva různé dotazy spojené operátorem $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Operátory pole
Příkaz
Podporuje se
all
Yes
elemMatch
Yes
size
Yes
Operátor komentáře
Příkaz
Podporuje se
comment
Yes
Operátory projekce
Příkaz
Podporuje se
elemMatch
Yes
meta
No
slice
Yes
Aktualizační operátory
Operátory pro aktualizaci polí
Příkaz
Podporuje se
inc
Yes
mul
Yes
rename
Yes
setOnInsert
Yes
set
Yes
unset
Yes
min
Yes
max
Yes
currentDate
Yes
Operátory pro aktualizaci matic
Příkaz
Podporuje se
$
Yes
$[]
Yes
$[\<identifier\>]
Yes
addToSet
Yes
pop
Yes
pullAll
Yes
pull
Yes
push
Yes
pushAll
Yes
Aktualizace modifikátorů
Příkaz
Podporuje se
each
Yes
slice
Yes
sort
Yes
position
Yes
Operátor pro bitovou aktualizaci
Příkaz
Podporuje se
bit
Yes
bitsAllSet
No
bitsAnySet
No
bitsAllClear
No
bitsAnyClear
No
Geoprostorové operátory
Operátor
Podporováno
$geoWithin
Yes
$geoIntersects
Yes
$near
Yes
$nearSphere
Yes
$geometry
Yes
$minDistance
Yes
$maxDistance
Yes
$center
No
$centerSphere
No
$box
No
$polygon
No
Operace řazení
Při použití findOneAndUpdate operace s rozhraním API pro MongoDB verze 4.0 se podporují operace řazení pro jedno pole a více polí. Operace řazení ve více polích byly omezením předchozích protokolů přenosu.
Indexování
Rozhraní API pro MongoDB podporuje různé indexy , které umožňují řazení podle více polí, zlepšují výkon dotazů a vynucují jedinečnost.
GridFS
Azure Cosmos DB podporuje GridFS prostřednictvím jakéhokoli ovladače Mongo kompatibilního s GridFS.
Replikace
Azure Cosmos DB podporuje automatickou nativní replikaci v nejnižších vrstvách. Tato logika umožňuje zároveň dosáhnout nízké latence a globální replikace. Azure Cosmos DB nepodporuje příkazy pro ruční replikaci.
Opakované zápisy
Opakovaně opakovatelné zápisy umožňují ovladačům MongoDB automaticky opakovat určité operace zápisu v případě selhání, ale výsledkem jsou přísnější požadavky na určité operace, které odpovídají požadavkům na protokol MongoDB. Když je tato funkce povolená, budou operace aktualizace, včetně odstranění, v horizontálně dělených kolekcích vyžadovat, aby byl klíč horizontálního dělení zahrnutý do filtru dotazu nebo příkazu update.
Například s horizontálně dělenou kolekcí horizontálně dělenou podle klíče "země": Pokud chcete odstranit všechny dokumenty s městem = "NYC" pole, bude aplikace muset provést operaci pro všechny hodnoty klíče horizontálního oddílu (země), pokud jsou povolené opakované zápisy.
db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Úspěch
db.coll.deleteMany({"city": "NYC"}) – Selhání s chybou ShardKeyNotFound(61)
Poznámka
Opakované zápisy v tuto chvíli nepodporují hromadné neuspořádané zápisy. Pokud chcete provádět hromadné zápisy s povolenými opakovanými zápisy, proveďte hromadné seřazené zápisy.
Azure Cosmos DB podporuje automatický sharding na straně serveru. Spravuje vytváření, umísťování a vyrovnávání horizontálních oddílů automaticky. Azure Cosmos DB nepodporuje příkazy pro ruční horizontální dělení, což znamená, že nemusíte vyvolávat příkazy, jako jsou addShard, balancerStart, moveChunk atd. Klíč horizontálního dělení stačí zadat pouze při vytváření kontejnerů nebo dotazování dat.
Relace
Azure Cosmos DB zatím nepodporuje příkazy relací na straně serveru.
Hodnota TTL (Time-To-Live)
Azure Cosmos DB podporuje hodnotu TTL (Time to Live) na základě časového razítka dokumentu. Hodnotu TTL je možné povolit pro kolekce z Azure Portal.
Transakce
Transakce s více dokumenty jsou podporovány v rámci nehardované kolekce. Transakce s více dokumenty nejsou podporovány napříč kolekcemi ani v horizontálně dělených kolekcích. Časový limit pro transakce je pevných 5 sekund.
Správa uživatelů a rolí
Azure Cosmos DB zatím nepodporuje uživatele a role. Azure Cosmos DB ale podporuje řízení přístupu na základě role v Azure (Azure RBAC) a hesla a klíče jen pro čtení a zápis, které je možné získat prostřednictvím Azure Portal (stránka Připojovací řetězec).
Write Concern
Některé aplikace spoléhají na problém s zápisem, který určuje počet odpovědí požadovaných během operace zápisu. Vzhledem k tomu, jak Azure Cosmos DB zpracovává replikaci na pozadí, jsou všechny zápisy ve výchozím nastavení automaticky kvorum. Všechny obavy o zápis určené klientským kódem se ignorují. Další informace najdete v tématu popisujícím využití úrovní konzistence pro maximalizaci dostupnosti a výkonu.
Naučte se používat Robo 3T se službou Azure Cosmos DB pro MongoDB.
Prozkoumejte ukázky MongoDB se službou Azure Cosmos DB pro MongoDB.
Pokoušíte se naplánovat kapacitu pro migraci do služby Azure Cosmos DB? Informace o existujícím databázovém clusteru můžete použít k plánování kapacity.