Sdílet prostřednictvím


Azure Cosmos DB pro MongoDB (verze serveru 4.0): 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.

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 for MongoDB. Při vytváření účtů Azure Cosmos DB for MongoDB mají verze účtů 3.6 a novější koncový bod ve formátu *.mongo.cosmos.azure.com , zatímco verze účtů 3.2 má koncový bod ve formátu *.documents.azure.com.

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.

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:

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 transakcí

Příkaz Podporováno
abortTransaction Ano
commitTransaction Yes

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

Převodní výrazy

Příkaz Podporováno
convert Ano
toBool Ano
toDate Ano
toDecimal Ano
toDouble Ano
toInt Ano
toLong Ano
toObjectId Ano
toString 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
ltrim Ano
rtrim Ano
trim 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

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. Dokumenty napsané nebo aktualizované prostřednictvím koncového bodu, na kterém běží verze 4.0 nebo novější, můžete využít optimalizace.

Ve scénáři upgradu nebudou dokumenty napsané před upgradem verze 4.0+ těžit z vyššího výkonu, dokud se neaktualizují prostřednictvím operace zápisu prostřednictvím koncového bodu 4.0+ .

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.

Povolení 16 MB je možné provést na kartě funkce na webu Azure Portal nebo programově přidáním možnosti EnableMongo16MBDocumentSupport.

Doporučujeme povolit opakování na straně serveru a vyhnout se indexům zástupných znaků, aby žádosti s většími dokumenty byly úspěšné. V případě potřeby může zvýšení výkonu zvýšit počet RU databáze nebo kolekce.

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 „|“ 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 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 s rozhraním API pro MongoDB verze 4.0 se podporují operace řazení v jednom poli a více polích. Operace řazení na více polích byly omezením předchozích drátových protokolů.

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 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 ruční replikace.

Opakovatelné zápisy

Opakovatelné zápisy umožňují ovladačům MongoDB automaticky opakovat určité operace zápisu, pokud došlo k selhání, ale výsledkem jsou přísnější požadavky na určité operace, které odpovídají požadavkům protokolu MongoDB. Pokud je tato funkce povolená, operace aktualizace, včetně odstranění, budou v horizontálně dělených kolekcích vyžadovat zahrnutí klíče horizontálního oddílu do příkazu filtru dotazu nebo příkazu update.

Například s horizontálně dělenou kolekcí horizontálně dělenou podle klíče "country": Pokud chcete odstranit všechny dokumenty s městem = "NYC" pole, aplikace bude muset provést operaci pro všechny hodnoty klíče horizontálního oddílu (země), pokud jsou povolené opakovatelné zápisy.

  • db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Úspěch
  • db.coll.deleteMany({"city": "NYC"}) – Selhání s chybou ShardKeyNotFound(61)

Poznámka:

Opakovatelné 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.

Pokud chcete tuto funkci povolit, přidejte do svého databázového účtu funkci EnableMongoRetryableWrites. Tuto funkci je také možné povolit na kartě funkce na webu Azure Portal.

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.

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ý 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 Azure (Azure RBAC) a hesla a klíče jen pro čtení a čtení, která je možné získat prostřednictvím webu Azure Portal (stránka připojovacího řetězce).

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 na pozadí, jsou všechny zápisy automaticky kvorum ve výchozím nastavení. Všechny obavy týkající se zápisu určené kódem klienta se ignorují. Další informace najdete v tématu popisujícím využití úrovní konzistence pro maximalizaci dostupnosti a výkonu.

Další kroky