Azure Cosmos DB pro MongoDB (verze 3.6): podporované funkce a syntaxe
Článek
PLATÍ PRO: MongoDB
Azure Cosmos DB je celosvětově rozšířená vícemodelová databázová služba společnosti Microsoft. Ke komunikaci se službou Azure Cosmos DB for MongoDB můžete použít kterýkoli z opensourcových klientských ovladačů MongoDB. Azure Cosmos DB for MongoDB umožňuje používat existující klientské ovladače tím, že dodržuje protokol přenosu MongoDB.
Pomocí služby Azure Cosmos DB pro MongoDB můžete využívat výhody MongoDB, se všemi podnikovými funkcemi, které poskytuje Azure Cosmos DB: globální distribuci, 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.
Poznámka:
Verze 3.6 služby Azure Cosmos DB pro MongoDB nemá žádné aktuální plány na ukončení životnosti (EOL). Minimální oznámení pro budoucí EOL je tři roky.
Podpora protokolu
Azure Cosmos DB pro MongoDB je ve výchozím nastavení kompatibilní se serverem MongoDB verze 3.6 pro nové účty. 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 for MongoDB. Při vytváření účtů rozhraní API služby Azure Cosmos DB pro MongoDB má verze účtu 3.6 koncový bod ve formátu *.mongo.cosmos.azure.com , zatímco verze účtu 3.2 má koncový bod ve formátu *.documents.azure.com.
Podpora dotazovacího jazyka
Azure Cosmos DB pro MongoDB poskytuje komplexní podporu konstruktorů dotazovacího jazyka MongoDB. Následující části obsahují podrobný seznam operací serveru, operátorů, fází, příkazů a možností aktuálně podporovaných službou Azure Cosmos DB.
Poznámka:
Tento článek uvádí pouze podporované příkazy serveru a vylučuje funkce obálky na straně klienta. Funkce obálky na straně klienta, jako deleteMany() jsou a updateMany() interně využívají delete() příkazy a update() příkazy serveru. Funkce využívající podporované příkazy serveru jsou kompatibilní se službou Azure Cosmos DB pro MongoDB.
Databázové příkazy
Azure Cosmos DB pro MongoDB podporuje následující databázové příkazy:
$lookup zatím nepodporuje funkci nesouvisejících poddotazů zavedenou na serveru verze 3.6. Při pokusu o použití operátoru s poli a pipeline polí se zobrazí chyba se zprávou, která obsahujelet is not supported.let$lookup
Logické výrazy
Příkaz
Podporováno
and
Ano
not
Ano
or
Yes
Nastavovací výrazy
Příkaz
Podporováno
setEquals
Ano
setIntersection
Ano
setUnion
Ano
setDifference
Ano
setIsSubset
Ano
anyElementTrue
Ano
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
Podporováno
cmp
Ano
eq
Ano
gt
Ano
gte
Ano
lt
Ano
lte
Ano
ne
Ano
in
Ano
nin
Yes
Aritmetické výrazy
Příkaz
Podporováno
abs
Ano
add
Ano
ceil
Ano
divide
Ano
exp
Ano
floor
Ano
ln
Ano
log
Ano
log10
Ano
mod
Ano
multiply
Ano
pow
Ano
sqrt
Ano
subtract
Ano
trunc
Yes
Řetězcové výrazy
Příkaz
Podporováno
concat
Ano
indexOfBytes
Ano
indexOfCP
Ano
split
Ano
strLenBytes
Ano
strLenCP
Ano
strcasecmp
Ano
substr
Ano
substrBytes
Ano
substrCP
Ano
toLower
Ano
toUpper
Yes
Operátor vyhledávání textu
Příkaz
Podporováno
meta
No
Maticové výrazy
Příkaz
Podporováno
arrayElemAt
Ano
arrayToObject
Ano
concatArrays
Ano
filter
Ano
indexOfArray
Ano
isArray
Ano
objectToArray
Ano
range
Ano
reverseArray
Ano
reduce
Ano
size
Ano
slice
Ano
zip
Ano
in
Yes
Operátory proměnných
Příkaz
Podporováno
map
Ano
let
Yes
Systémové proměnné
Příkaz
Podporováno
$$CURRENT
Ano
$$DESCEND
Ano
$$KEEP
Ano
$$PRUNE
Ano
$$REMOVE
Ano
$$ROOT
Yes
Operátor literálu
Příkaz
Podporováno
literal
Ano
Datumové výrazy
Příkaz
Podporováno
dayOfYear
Ano
dayOfMonth
Ano
dayOfWeek
Ano
year
Ano
month
Ano
week
Ano
hour
Ano
minute
Ano
second
Ano
millisecond
Ano
dateToString
Ano
isoDayOfWeek
Ano
isoWeek
Ano
dateFromParts
Ano
dateToParts
Ano
dateFromString
Ano
isoWeekYear
Yes
Podmíněné výrazy
Příkaz
Podporováno
cond
Ano
ifNull
Ano
switch
Yes
Operátor datového typu
Příkaz
Podporováno
type
Ano
Výrazy akumulátoru
Příkaz
Podporováno
sum
Ano
avg
Ano
first
Ano
last
Ano
max
Ano
min
Ano
push
Ano
addToSet
Ano
stdDevPop
Ano
stdDevSamp
Yes
Operátor sloučení
Příkaz
Podporováno
mergeObjects
Ano
Datové typy
Příkaz
Podporováno
Double
Ano
String
Ano
Object
Ano
Array
Ano
Binary Data
Ano
ObjectId
Ano
Boolean
Ano
Date
Ano
Null
Ano
32-bit Integer (int)
Ano
Timestamp
Ano
64-bit Integer (long)
Ano
MinKey
Ano
MaxKey
Ano
Decimal128
Ano
Regular Expression
Ano
JavaScript
Ano
JavaScript (with scope)
Ano
Undefined
Yes
Indexy a vlastnosti indexu
Indexy
Příkaz
Podporováno
Single Field Index
Ano
Compound Index
Ano
Multikey Index
Ano
Text Index
Ne
2dsphere
Ano
2d Index
No
Hashed Index
Ne
Vlastnosti indexu
Příkaz
Podporováno
TTL
Ano
Unique
Ano
Partial
No
Case Insensitive
No
Sparse
No
Background
Ano
Operátory
Logické operátory
Příkaz
Podporováno
or
Ano
and
Ano
not
Ano
nor
Yes
Operátory elementů
Příkaz
Podporováno
exists
Ano
type
Yes
Operátory dotazů pro vyhodnocení
Příkaz
Podporováno
expr
Yes
jsonSchema
Ne
mod
Ano
regex
Yes
text
Ne (nepodporuje se. Místo toho použijte $regex.)
where
No
V $regex dotazech umožňují výrazy ukotvené doleva vyhledávání indexu. 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ů regulárních výrazů. Například vzhledem k následujícímu původnímu dotazu: find({x:{$regex: /^abc$/})musí být upraven takto:
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 | pruhu funguje jako "nebo" – dotaz find({x:{$regex: /^abc |^def/}) odpovídá dokumentům, ve kterých pole x obsahuje hodnoty začínající nebo "abc""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 polí
Příkaz
Podporováno
all
Ano
elemMatch
Ano
size
Yes
Operátor komentáře
Příkaz
Podporováno
comment
Ano
Operátory projekce
Příkaz
Podporováno
elemMatch
Yes
meta
Ne
slice
Ano
Aktualizační operátory
Operátory pro aktualizaci polí
Příkaz
Podporováno
inc
Ano
mul
Ano
rename
Ano
setOnInsert
Ano
set
Ano
unset
Ano
min
Ano
max
Ano
currentDate
Yes
Operátory pro aktualizaci matic
Příkaz
Podporováno
$
Ano
$[]
Ano
$[\<identifier\>]
Ano
addToSet
Ano
pop
Ano
pullAll
Ano
pull
Ano
push
Ano
pushAll
Yes
Modifikátory aktualizací
Příkaz
Podporováno
each
Ano
slice
Ano
sort
Ano
position
Yes
Operátor pro bitovou aktualizaci
Příkaz
Podporováno
bit
Yes
bitsAllSet
No
bitsAnySet
No
bitsAllClear
No
bitsAnyClear
Ne
Geoprostorové operátory
Operátor
Podporováno
$geoWithin
Ano
$geoIntersects
Ano
$near
Ano
$nearSphere
Ano
$geometry
Ano
$minDistance
Ano
$maxDistance
Ano
$center
No
$centerSphere
No
$box
No
$polygon
Ne
Operace řazení
Při použití findOneAndUpdate operace se operace řazení v jednom poli podporují, ale operace řazení na více polích se nepodporují.
Indexování
Rozhraní API pro MongoDB podporuje různé indexy , které umožňují řazení podle více polí, zlepšení výkonu dotazů a vynucování jedinečnosti.
GridFS
Azure Cosmos DB podporuje GridFS prostřednictvím jakéhokoli ovladače MongoDB 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 ruční replikace.
Opakovatelné zápisy
Azure Cosmos DB zatím nepodporuje opakovatelné zápisy. Klientské ovladače musí být přidány retryWrites=false do svých připojovací řetězec.
Sharding
Azure Cosmos DB podporuje automatický sharding na straně serveru. Spravuje vytváření, umístění a vyrovnávání horizontálních oddílů automaticky. Azure Cosmos DB nepodporuje ruční příkazy horizontálního dělení, což znamená, že nemusíte volat příkazy, jako jsou addShard, balancerStart, moveChunk atd. Při vytváření kontejnerů nebo dotazování dat stačí zadat klíč horizontálního oddílu.
Přednášky
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) založenou na časovém razítku dokumentu. Hodnotu TTL je možné povolit pro kolekce z webu Azure Portal.
Správa uživatelů a rolí
Azure Cosmos DB zatím nepodporuje uživatele a role. Podporuje ale řízení přístupu na základě role Azure (Azure RBAC) a hesla nebo klíče jen pro čtení a pro čtení, která je možné získat prostřednictvím podokna připojovací řetězec na webu Azure Portal.
Write Concern
Některé aplikace spoléhají na problém při zápisu, 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, všechny zápisy jsou ve výchozím nastavení automaticky kvorum většiny při použití silné konzistence. Všechny obavy týkající se zápisu určené kódem klienta se ignorují. Další informace najdete v článku o maximalizaci dostupnosti a výkonu pomocí úrovní konzistence.