MongoDB-hez készült Azure Cosmos DB (3.2-es verzió): támogatott funkciók és szintaxis
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Az Azure Cosmos DB a Microsoft globálisan elosztott többmodelles adatbázis-szolgáltatása. A MongoDB-hez készült Azure Cosmos DB-vel a nyílt forráskódú MongoDB-ügyfélillesztők bármelyikével kommunikálhat. A MongoDB-hez készült Azure Cosmos DB lehetővé teszi a meglévő ügyfélillesztők használatát a MongoDB vezetékes protokolljának betartásával.
A MongoDB-hez készült Azure Cosmos DB-vel élvezheti a mongoDB előnyeit, és élvezheti az Azure Cosmos DB által nyújtott összes vállalati képességet: globális terjesztést, automatikus horizontális skálázást, rendelkezésre állást és késést garantál, minden mező automatikus indexelését, inaktív titkosítást, biztonsági mentéseket és sok mást.
Megjegyzés
A MongoDB-hez készült Azure Cosmos DB 3.2-es verziója nem rendelkezik az életciklus megszűnésére (EOL) vonatkozó jelenlegi tervekkel. A jövőbeli EOL minimális értesítése három év.
Protokolltámogatás
A MongoDB-hez készült Azure Cosmos DB összes új fiókja kompatibilis a MongoDB-kiszolgáló 3.6-os verziójával. Ez a cikk a MongoDB 3.2-es verzióját ismerteti. A támogatott operátorok, valamint a korlátozások és kivételek listája alább található. Minden ügyfélillesztőnek, amely ismeri ezeket a protokollokat, képesnek kell lennie csatlakozni a MongoDB-hez készült Azure Cosmos DB-hez.
A MongoDB-hez készült Azure Cosmos DB zökkenőmentes frissítési élményt is kínál a jogosult fiókokhoz. További információt a MongoDB verziófrissítési útmutatójában talál.
Lekérdezési nyelv támogatása
A MongoDB-hez készült Azure Cosmos DB átfogó támogatást nyújt a MongoDB lekérdezési nyelvi szerkezeteihez. Az alábbiakban megtalálja a jelenleg támogatott műveletek, operátorok, szakaszok, parancsok és beállítások részletes listáját.
Adatbázisparancsok
A MongoDB-hez készült Azure Cosmos DB a következő adatbázis-parancsokat támogatja:
Megjegyzés
Ez a cikk csak a támogatott kiszolgálóparancsokat sorolja fel, és kizárja az ügyféloldali burkolófüggvényeket. Az ügyféloldali burkoló olyan függvényeket használ, mint a deleteMany()
és updateMany()
update()
a belső és a delete()
kiszolgálói parancsok. A támogatott kiszolgálóparancsokat használó függvények kompatibilisek a MongoDB-hez készült Azure Cosmos DB-vel.
Lekérdezési és írási műveletek parancsai
delete
find
findAndModify
getLastError
getMore
insert
update
Hitelesítési parancsok
logout
authenticate
getnonce
Adminisztrációs parancsok
dropDatabase
listCollections
drop
create
filemd5
createIndexes
listIndexes
dropIndexes
connectionStatus
reIndex
Diagnosztikai parancsok
buildInfo
collStats
dbStats
hostInfo
listDatabases
whatsmyuri
Összesítési folyamat
Összesítési parancsok
aggregate
count
distinct
Összesítési fázisok
$project
$match
$limit
$skip
$unwind
$group
$sample
$sort
$lookup
$out
$count
$addFields
Összesítő kifejezések
Logikai kifejezések
$and
$or
$not
Halmazkifejezések
$setEquals
$setIntersection
$setUnion
$setDifference
$setIsSubset
$anyElementTrue
$allElementsTrue
Összehasonlító kifejezések
$cmp
$eq
$gt
$gte
$lt
$lte
$ne
Aritmetikai kifejezések
$abs
$add
$ceil
$divide
$exp
$floor
$ln
$log
$log10
$mod
$multiply
$pow
$sqrt
$subtract
$trunc
Sztringkifejezések
$concat
$indexOfBytes
$indexOfCP
$split
$strLenBytes
$strLenCP
$strcasecmp
$substr
$substrBytes
$substrCP
$toLower
$toUpper
Tömbkifejezések
$arrayElemAt
$concatArrays
$filter
$indexOfArray
$isArray
$range
$reverseArray
$size
$slice
$in
Dátumkifejezések
$dayOfYear
$dayOfMonth
$dayOfWeek
$year
$month
$week
$hour
$minute
$second
$millisecond
$isoDayOfWeek
$isoWeek
Feltételes kifejezések
$cond
$ifNull
Összesítő gyűjtők
$sum
$avg
$first
$last
$max
$min
$push
$addToSet
Operátorok
Alább a támogatott operátorok láthatók a használatukat bemutató megfelelő példákkal. Tekintse meg a lenti lekérdezésekben használt mintadokumentumot:
{
"Volcano Name": "Rainier",
"Country": "United States",
"Region": "US-Washington",
"Location": {
"type": "Point",
"coordinates": [
-121.758,
46.87
]
},
"Elevation": 4392,
"Type": "Stratovolcano",
"Status": "Dendrochronology",
"Last Known Eruption": "Last known eruption from 1800-1899, inclusive"
}
Operátor | Példa |
---|---|
eq |
{ "Volcano Name": { $eq: "Rainier" } } |
gt |
{ "Elevation": { $gt: 4000 } } |
gte |
{ "Elevation": { $gte: 4392 } } |
lt |
{ "Elevation": { $lt: 5000 } } |
lte |
{ "Elevation": { $lte: 5000 } } |
ne |
{ "Elevation": { $ne: 1 } } |
in |
{ "Volcano Name": { $in: ["St. Helens", "Rainier", "Glacier Peak"] } } |
nin |
{ "Volcano Name": { $nin: ["Lassen Peak", "Hood", "Baker"] } } |
or |
{ $or: [ { Elevation: { $lt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
and |
{ $and: [ { Elevation: { $gt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
not |
{ "Elevation": { $not: { $gt: 5000 } } } |
nor |
{ $nor: [ { "Elevation": { $lt: 4000 } }, { "Volcano Name": "Baker" } ] } |
exists |
{ "Status": { $exists: true } } |
type |
{ "Status": { $type: "string" } } |
mod |
{ "Elevation": { $mod: [ 4, 0 ] } } |
regex |
{ "Volcano Name": { $regex: "^Rain"} } |
Megjegyzések
A $regex lekérdezésekben a balra horgonyzott kifejezések engedélyezik az indexben való keresést. Azonban az „i” módosító (kis- és nagybetűk megkülönböztetése nélkül) és az „m” módosító (többsoros) használatakor a gyűjtemény az összes kifejezésben keres.
Ha "$" vagy "|" kifejezésre van szükség, a legjobb, ha két (vagy több) reguláris lekérdezést hoz létre.
Például ha az eredeti lekérdezés a következő: find({x:{$regex: /^abc$/})
, a következőképpen kell módosítani: find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
.
Az első rész az indexet fogja használni a keresés ^abc kezdetű dokumentumokra való korlátozásához, a második rész pedig meg fogja feleltetni a pontos bejegyzéseket.
A „|” sávoperátor „vagy” függvényként működik – a(z) find({x:{$regex: /^abc|^def/})
lekérdezés megfelelteti azokat a dokumentumokat, amelyekben az „x” mezőben „abc” vagy „def” sztringgel kezdődő értékek találhatók. Az index használatához ajánlott a lekérdezést két külön lekérdezésre bontani, amelyeket az $or operátor kapcsol össze: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] })
.
Frissítési operátorok
Mezőfrissítő operátorok
$inc
$mul
$rename
$setOnInsert
$set
$unset
$min
$max
$currentDate
Tömbfrissítő operátorok
$addToSet
$pop
$pullAll
$pull
(Megjegyzés: a feltétellel rendelkező $pull nem támogatott)$pushAll
$push
$each
$slice
$sort
$position
Bitenként frissítő operátor
$bit
Térinformatikai operátorok
Operátor | Példa | Támogatott |
---|---|---|
$geoWithin |
{ "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
Igen |
$geoIntersects |
{ "Location.coordinates": { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
Igen |
$near |
{ "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
Igen |
$nearSphere |
{ "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
Igen |
$geometry |
{ "Location.coordinates": { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
Igen |
$minDistance |
{ "Location.coordinates": { $nearSphere : { $geometry: {type: "Point", coordinates: [ -121, 46 ]}, $minDistance: 1000, $maxDistance: 1000000 } } } |
Igen |
$maxDistance |
{ "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
Igen |
$center |
{ "Location.coordinates": { $geoWithin: { $center: [ [-121, 46], 1 ] } } } |
Igen |
$centerSphere |
{ "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
Igen |
$box |
{ "Location.coordinates": { $geoWithin: { $box: [ [ 0, 0 ], [ -122, 47 ] ] } } } |
Igen |
$polygon |
{ "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
Yes |
Rendezési műveletek
A művelet használatakor az findOneAndUpdate
egyetlen mező rendezési műveletei támogatottak, de a több mezőre vonatkozó rendezési műveletek nem támogatottak.
Egyéb operátorok
Operátor | Példa | Megjegyzések |
---|---|---|
$all |
{ "Location.coordinates": { $all: [-121.758, 46.87] } } |
|
$elemMatch |
{ "Location.coordinates": { $elemMatch: { $lt: 0 } } } |
|
$size |
{ "Location.coordinates": { $size: 2 } } |
|
$comment |
{ "Location.coordinates": { $elemMatch: { $lt: 0 } }, $comment: "Negative values"} |
|
$text |
Nem támogatott. A $regex használható helyette. |
Nem támogatott operátorok
Az $where
és az $eval
operátorokat az Azure Cosmos DB nem támogatja.
Metódusok
A következő metódusok támogatottak:
Kurzormetódusok
Metódus | Példa | Megjegyzések |
---|---|---|
cursor.sort() |
cursor.sort({ "Elevation": -1 }) |
A rendezési kulcs nélküli dokumentumok nem lesznek visszaadva |
Egyedi indexek
Az Azure Cosmos DB a dokumentumok minden olyan mezőjét indexeli, amelyet a rendszer alapértelmezés szerint az adatbázisba ír. Az egyedi indexek biztosítják, hogy egy adott mező ne rendelkezzen ismétlődő értékekkel a gyűjtemény összes dokumentumában, hasonlóan ahhoz, ahogyan az egyediség megmarad az alapértelmezett _id
kulcson. Az Azure Cosmos DB-ben a createIndex paranccsal hozhat létre egyéni indexeket, beleértve az "egyedi" kényszert is.
Az Azure Cosmos DB for MongoDB-t használó összes Azure Cosmos DB-fiókhoz egyedi indexek érhetők el.
Élettartam (TTL)
Az Azure Cosmos DB csak a gyűjtemény szintjén (_ts) támogatja az élettartamot (TTL) a 3.2-es verzióban. Frissítsen a 3.6-os vagy újabb verziókra, hogy kihasználhassa a TTL egyéb formáit.
Felhasználó- és szerepkörkezelés
Az Azure Cosmos DB még nem támogatja a felhasználókat és a szerepköröket. Az Azure Cosmos DB azonban támogatja az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC), valamint az írásvédett és írásvédett jelszavakat/kulcsokat, amelyeket a Azure Portal (Kapcsolati sztring lap) keresztül szerezhet be.
Replikáció
Az Azure Cosmos DB támogatja az automatikus natív replikációt a legalsó rétegeken. A rendszer az alacsony késésű, globális replikáció elérése érdekében kiterjeszti ezt a logikát. Az Azure Cosmos DB nem támogatja a manuális replikációs parancsokat.
Írási szempont
Egyes alkalmazások írási problémára támaszkodnak, amely meghatározza az írási művelet során szükséges válaszok számát. Mivel az Azure Cosmos DB a háttérben kezeli a replikációt, az összes írás alapértelmezés szerint automatikusan kvórum lesz. Az ügyfélkód által megadott írási problémát a rendszer figyelmen kívül hagyja. További információk: A rendelkezésre állás és a teljesítmény maximalizálása a konzisztenciaszintek használatával.
Sharding
Az Azure Cosmos DB támogatja az automatikus, kiszolgálóoldali horizontális skálázást. Automatikusan kezeli a szegmensek létrehozását, elhelyezését és kiegyensúlyozását. Az Azure Cosmos DB nem támogatja a manuális horizontális skálázási parancsokat, ami azt jelenti, hogy nem kell meghívnia olyan parancsokat, mint a shardCollection, addShard, balancerStart, moveChunk stb. A tárolók létrehozása vagy az adatok lekérdezése során csak a szegmenskulcsot kell megadnia.
Következő lépések
- Megtudhatja, hogyan használhatja a Studio 3T-t a MongoDB-hez készült Azure Cosmos DB-vel.
- Megtudhatja, hogyan használhatja a Robo 3T-t a MongoDB-hez készült Azure Cosmos DB-vel.
- Megismerheti a MongoDB-mintákat a MongoDB-hez készült Azure Cosmos DB-vel.