Rozhraní API Azure Cosmos DB pro MongoDB (verze serveru 4,0): podporované funkce a syntaxe

PLATÍ pro: Azure Cosmos DB API pro MongoDB

Azure Cosmos DB je globálně distribuovaná databázová služba Microsoftu pro více modelů. Můžete komunikovat s rozhraním API Azure Cosmos DB pro MongoDB pomocí kteréhokoli z open-source klientských ovladačůMongoDB. Rozhraní API služby Azure Cosmos DB pro MongoDB umožňuje použití existujících klientských ovladačů dodržováním přenosového protokolu MongoDB.

Díky rozhraní API Azure Cosmos DB pro MongoDB můžete využívat výhody MongoDB, ke kterému jste se přihlásili, se všemi podnikovými funkcemi, které Cosmos DB poskytuje: globální distribuce, Automatické horizontálního dělení, dostupnost a záruky latence, šifrování v klidovém formátu, zálohování a spoustu dalšího.

Podpora protokolů

Podporované operátory a případná omezení nebo výjimky jsou uvedené níže. Jakýkoli ovladač klienta, který podporuje tyto protokoly, by se měl dokázat připojit k rozhraní API služby Azure Cosmos DB pro MongoDB. Při použití rozhraní API Azure Cosmos DB pro účty MongoDB má 3.6 + verze účtů ve formátu, *.mongo.cosmos.azure.com že verze 3,2 účtů má koncový bod ve formátu *.documents.azure.com .

Poznámka

Tento článek obsahuje jenom podporované příkazy serveru a nezahrnuje funkce obálky na straně klienta. Funkce obálky na straně klienta, například deleteMany() a updateMany() interně využívají delete() update() příkazy a serveru. Funkce, které využívají podporované příkazy serveru, jsou kompatibilní s rozhraním API Azure Cosmos DB pro MongoDB.

Podpora jazyka dotazů

Rozhraní API pro Azure Cosmos DB MongoDB poskytuje komplexní podporu konstrukcí jazyka MongoDB pro dotazy. Níže najdete podrobný seznam aktuálně podporovaných operací, operátorů, fází, příkazů a možností.

Databázové příkazy

Rozhraní API pro 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
Změna datových proudů Yes
delete Yes
platnost No
find Yes
findAndModify Yes
getLastError Yes
getMore Yes
getPrevError No
insert Yes
parallelCollectionScan No
resetError No
update Yes

Příkazy transakcí

Příkaz Podporováno
abortTransaction Yes
commitTransaction Yes

Příkazy pro ověření

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

Příkazy pro správu

Příkaz Podporováno
cloneCollectionAsCapped No
collMod No
connectionStatus No
convertToCapped No
copydb No
vytvoření Yes
createIndexes Yes
currentOp Yes
drop Yes
dropDatabase Yes
dropIndexes Yes
filemd5 Yes
killCursors Yes
killOp No
listCollections Yes
listDatabases Yes
listIndexes Yes
reIndex Yes
Přejmenujte No

Příkazy pro diagnostiku

Příkaz Podporováno
buildInfo Yes
collStats Yes
connPoolStats No
connectionStatus No
dataSize No
dbHash No
dbStats Yes
částech Yes
funkce No
hostInfo Yes
listDatabases Yes
listCommands No
modulu No
serverStatus No
top No
whatsmyuri Yes

Agregovaný kanál

Příkazy pro agregaci

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

Fáze agregace

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

Poznámka

$lookup zatím nepodporuje funkci nekorelačních poddotazů , která byla představena 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 Podporováno
$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 Podporováno
$setEquals Yes
$setIntersection Yes
$setUnion Yes
$setDifference Yes
$setIsSubset Yes
$anyElementTrue Yes
$allElementsTrue Yes

Porovnávací výrazy

Příkaz Podporováno
$cmp Yes
$eq Yes
$gt Yes
$gte Yes
$lt Yes
$lte Yes
$ne Yes
$in Yes
$nin Yes

Aritmetické výrazy

Příkaz Podporováno
$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 Podporováno
$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 hledání textu

Příkaz Podporováno
$meta No

Maticové výrazy

Příkaz Podporováno
$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 Podporováno
$map Yes
$let Yes

Systémové proměnné

Příkaz Podporováno
$ $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 No
$dateToParts No
$dateFromString No
$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

Výrazy akumulovaných

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

Rozhraní API pro Azure Cosmos DB pro MongoDB podporuje dokumenty kódované ve formátu MongoDB BSON. Verze rozhraní API 4,0 vylepšuje interní použití tohoto formátu za účelem zvýšení výkonu a snížení nákladů. Z tohoto koncového bodu s 4,0 výhodami se zapisují nebo aktualizují dokumenty.

V případě upgradunebudou dokumenty zapsané před upgradem na verzi 4,0 využívat Vylepšený výkon, dokud nebudou aktualizovány prostřednictvím operace zápisu prostřednictvím koncového bodu 4,0.

Příkaz Podporováno
dvojité Ano
Řetězec Yes
Objekt Yes
Pole Yes
Binární data Yes
ObjectId Yes
Logická hodnota Yes
Date (Datum) Yes
Null Yes
32 bitové celé číslo (int) Yes
Timestamp Yes
64-bitové celé číslo (Long) Yes
MinKey Yes
MaxKey Yes
Decimal128 Yes
Regulární výraz Yes
JavaScript Yes
JavaScript (s rozsahem) Yes
Nedefinované Yes

Index a vlastnosti indexu

Indexy

Příkaz Podporováno
Index jednoho pole Yes
Složený index Yes
Multikey index Yes
Textový index No
2dsphere Yes
2D index No
Index s hodnotou hash Yes

Vlastnosti indexu

Příkaz Podporováno
TTL Yes
Jedinečná Yes
Částečné No
Nerozlišuje malá a velká písmena. No
Řídké No
Pozadí Yes

Operátory

Logické operátory

Příkaz Podporováno
$or Yes
$and Yes
$not Yes
$nor Yes

Operátory elementu

Příkaz Podporováno
$exists Yes
$type Yes

Operátory dotazování pro vyhodnocení

Příkaz Podporováno
$expr No
$jsonSchema No
$mod Yes
$regex Yes
$text Ne (není podporováno. Místo toho použijte $regex.)
$where No

V $regexch dotazech jsou výrazy ukotvené zleva povoleny hledání v 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 potřebujete začlenit „$“ nebo „|“, je nejlepší vytvořit dva (nebo více) dotazů využívajících regulární výrazy. Například s ohledem na následující původní dotaz: find({x:{$regex: /^abc$/}) , je nutné 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 Podporováno
$all Yes
$elemMatch Yes
$size Yes

Operátor komentáře

Příkaz Podporováno
$comment Yes

Operátory projekce

Příkaz Podporováno
$elemMatch Yes
$meta No
$slice Yes

Aktualizační operátory

Operátory pro aktualizaci polí

Příkaz Podporováno
$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 Podporováno
$ Yes
$[] Yes
$[] Yes
$addToSet Yes
$pop Yes
$pullAll Yes
$pull Yes
$push Yes
$pushAll Yes

Aktualizovat modifikátory

Příkaz Podporováno
$each Yes
$slice Yes
$sort Yes
$position Yes

Operátor pro bitovou aktualizaci

Příkaz Podporováno
$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 jsou podporovány operace řazení v jednom poli, ale operace řazení u více polí nejsou podporovány.

Jedinečné indexy

Jedinečné indexy zajišťují, že konkrétní pole neobsahuje duplicitní hodnoty ve všech dokumentech v kolekci, podobně jako jedinečnost je zachována ve výchozím klíči "_ID". V Azure Cosmos DB můžete vytvořit jedinečné indexy pomocí createIndex příkazu s unique parametrem omezení:

globaldb:PRIMARY> db.coll.createIndex( { "amount" : 1 }, {unique:true} )
{
    "_t" : "CreateIndexesResponse",
    "ok" : 1,
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 4
}

Složené indexy

Složené indexy poskytují způsob, jak vytvořit index pro skupiny polí po dobu až osmi polí. Tento typ indexu se od nativních složených indexů MongoDB liší. V Azure Cosmos DB se pro řazení operací, které jsou použity na více polí, používají složené indexy. Chcete-li vytvořit složený index, je nutné zadat více než jednu vlastnost jako parametr:

globaldb:PRIMARY> db.coll.createIndex({"amount": 1, "other":1})
{
    "createdCollectionAutomatically" : false, 
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

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. Cosmos DB nepodporuje příkazy ruční replikace.

Opakované zápisy

Cosmos DB zatím nepodporuje opakované zápisy. Ovladače klienta musí do svého připojovacího řetězce přidat parametr URL ' retryWrites = false '. Další parametry adresy URL lze přidat pomocí prefixování s &.

Sharding

Azure Cosmos DB podporuje automatický sharding na straně serveru. Spravuje horizontálních oddílů vytváření, umísťování a vyrovnávání automaticky. Azure Cosmos DB nepodporuje ruční příkazy horizontálního dělení, což znamená, že nemusíte volat příkazy, jako je addShard, balancerStart, moveChunk atd. Při vytváření kontejnerů nebo dotazování na data stačí zadat horizontálních oddílů klíč.

Relace

Azure Cosmos DB ještě 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 lze povolit pro kolekce, a to tak, že se vrátíte do Azure Portal.

Transakce

Transakce s více dokumenty jsou podporovány v rámci kolekce unsharded. Transakce s více dokumenty nejsou v kolekcích nebo v kolekcích horizontálně dělené podporovány. Časový limit pro transakce je pevný 5 sekund.

Správa uživatelů a rolí

Azure Cosmos DB zatím nepodporuje uživatele a role. Cosmos DB však podporuje řízení přístupu na základě role Azure (Azure RBAC) a hesla pro čtení i zápis a hesla/klíče jen pro čtení, které lze získat pomocí Azure Portal (stránka připojovací řetězec).

Write Concern

Některé aplikace spoléhají na důležité operace zápisu, která určuje počet odpovědí vyžadovaných během operace zápisu. Kvůli tomu, jak Cosmos DB zpracovává replikaci na pozadí, jsou všechny zápisy ve výchozím nastavení automaticky kvora. Všechny důležité problémy s zápisy, které jsou určeny 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.

Další kroky

  • Naučte se používat Studio 3T s rozhraním API Azure Cosmos DB pro MongoDB.
  • Naučte se používat Robo 3T s rozhraním API Azure Cosmos DB pro MongoDB.
  • Prozkoumejte ukázky MONGODB s rozhraním API Azure Cosmos DB pro MongoDB.