Rozhraní API služby 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ů. S rozhraním API služby Azure Cosmos DB pro MongoDB můžete komunikovat pomocí libovolného open source klientského ovladače 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.

Pomocí rozhraní API služby Azure Cosmos DB pro MongoDB můžete využívat výhody MongoDB, na které jste zvykní, se všemi podnikovými funkcemi, které Cosmos DB poskytuje:globální distribuci, automatické shardování,záruky dostupnosti a latence, šifrování v klidech, zálohy a mnoho dalšího.

Podpora protokolu

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í účtů rozhraní API služby Azure Cosmos DB pro MongoDB mají účty verze 3.6 nebo novější koncový bod ve formátu , zatímco účty verze *.mongo.cosmos.azure.com 3.2 mají koncový bod ve formátu *.documents.azure.com .

Poznámka

Tento článek obsahuje pouze seznam podporovaných serverových příkazů a vylučuje funkce obálky na straně klienta. Obálkové funkce na straně klienta, jako jsou a deleteMany() updateMany() , interně využívají příkazy serveru delete() a update() . Funkce využívající podporované serverové příkazy jsou kompatibilní s rozhraním API služby Azure Cosmos DB pro MongoDB.

Podpora dotazovacího jazyka

Rozhraní API služby 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

Rozhraní API služby 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
Eval No
find Yes
findAndModify Yes
getLastError Yes
getMore Yes
getPrevError No
insert Yes
parallelCollectionScan No
resetError No
update Yes

Transakční příkazy

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
aktuálníop 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

Poznámka

Rozhraní API pro MongoDB nepodporuje srovnávací výrazy s literálem pole v dotazu.

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 textového vyhledávání

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

Literálový operátor

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

Accumulator expressions

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 Cosmos DB pro MongoDB podporuje dokumenty zakó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. Výhody toho těží dokumenty zapsané nebo aktualizované prostřednictvím koncového bodu verze 4.0.

Ve scénářiupgradu nebudou dokumenty napsané před upgradem na verzi 4.0 těžit z vyššího výkonu, dokud se ne aktualizují 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
$[<identifier>] 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í operace se operace řazení u jednoho pole podporují, ale operace řazení u více polí findOneAndUpdate se nepodporují.

Indexování

Rozhraní API pro MongoDB podporuje celou řadu indexů, které umožňují řazení podle více polí, zlepšují výkon dotazů a vynucuje 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. Cosmos Databáze nepodporuje příkazy ruční replikace.

Opakovatelné zápisy

Cosmos Databáze zatím nepodporuje zápisy, které je možné opakovat. Klientské ovladače musí do svého připojovacího řetězce přidat parametr adresy URL retryWrites=false. Další parametry adresy URL můžete přidat přidáním předpony "&".

Sharding

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

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. TTL je možné povolit pro kolekce tak, že Azure Portal .

Transakce

Transakce s více dokumenty se podporují v rámci nehardované kolekce. Transakce s více dokumenty nejsou podporované napříč kolekcemi ani v shardovaný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. Služba Cosmos DB ale podporuje řízení přístupu na základě role v Azure (Azure RBAC) a hesla a klíče pro čtení a zápis a jen pro čtení, 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 se zápisem, který určuje počet odpovědí pož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 obavy týkající se zápisu 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.

Další kroky

  • Naučte se používat Studio 3T s rozhraním API služby Azure Cosmos DB pro MongoDB.
  • Zjistěte, jak používat Robo 3T s rozhraním API služby Azure Cosmos DB pro MongoDB.
  • Prozkoumejte ukázky MongoDB pomocí rozhraní API služby Azure Cosmos DB pro MongoDB.
  • Pokoušíte se provést plánování kapacity pro migraci do Azure Cosmos DB? Informace o existujícím databázovém clusteru můžete použít k plánování kapacity.
    • Pokud víte jen počet virtuálních jadr a serverů ve stávajícím databázovém clusteru, přečtěte si o odhadování jednotek žádostí pomocí virtuálních jadr nebo virtuálních procesorů.
    • Pokud znáte typickou míru požadavků pro aktuální databázové úlohy, přečtěte si o odhadování jednotek žádostí pomocí Plánovače kapacity služby Azure Cosmos DB.