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