Azure Cosmos DB pro MongoDB (verze 3.6): podporované funkce a syntaxe

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:

Příkazy pro dotazovací a zápisové operace

Příkaz Podporováno
change streams Ano
delete Ano
eval Ne
find Ano
findAndModify Ano
getLastError Ano
getMore Ano
getPrevError Ne
insert Ano
parallelCollectionScan No
resetError No
update Ano

Příkazy pro ověření

Příkaz Podporováno
authenticate Ano
getnonce Ano
logout Yes

Příkazy pro správu

Příkaz Podporováno
cloneCollectionAsCapped No
collMod No
connectionStatus No
convertToCapped No
copydb No
create Ano
createIndexes Ano
currentOp Ano
drop Ano
dropDatabase Ano
dropIndexes Ano
filemd5 Ano
killCursors Ano
killOp Ne
listCollections Ano
listDatabases Ano
listIndexes Ano
reIndex Ano
renameCollection No

Příkazy pro diagnostiku

Příkaz Podporováno
buildInfo Ano
collStats Ano
connPoolStats No
connectionStatus No
dataSize No
dbHash No
dbStats Ano
explain Ano
features Ne
hostInfo Ano
listDatabases Ano
listCommands No
profiler No
serverStatus No
top No
whatsmyuri Ano

Agregační zřetězení

Příkazy pro agregaci

Příkaz Podporováno
aggregate Ano
count Ano
distinct Ano
mapReduce No

Fáze agregace

Příkaz Podporováno
addFields Yes
bucket No
bucketAuto No
changeStream Ano
collStats Ne
count Ano
currentOp Ne
facet Ano
geoNear Ano
graphLookup Ano
group Ano
indexStats Ne
limit Ano
listLocalSessions No
listSessions Ne
lookup Částečná
match Ano
out Ano
project Ano
redact Ano
replaceRoot Ano
replaceWith Ne
sample Ano
skip Ano
sort Ano
sortByCount Ano
unwind Ano

Poznámka:

$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.

Další kroky