Azure Cosmos DB for MongoDB (3.2-es verzió): támogatott funkciók és szintaxis
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Az Azure Cosmos-adatbázis 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-drótprotokollhoz való csatlakoztatással.
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 elosztást, automatikus horizontális skálázást, rendelkezésre állási és késési garanciákat, minden mező automatikus indexelését, inaktív titkosítást, biztonsági mentéseket és sok mást.
Feljegyzés
A MongoDB-hez készült Azure Cosmos DB 3.2-es verziója nem rendelkezik az élettartam 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ó. Az ezeket a protokollokat ismerő ügyfélillesztőknek csatlakozniuk kell 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ó a MongoDB verziófrissítési útmutatójában.
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 szerkezetekhez. Az alábbiakban a jelenleg támogatott műveletek, operátorok, szakaszok, parancsok és beállítások részletes listáját találja.
Adatbázisparancsok
A MongoDB-hez készült Azure Cosmos DB a következő adatbázis-parancsokat támogatja:
Feljegyzé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 funkciókkal rendelkezik, mint a deleteMany()
belső és updateMany()
update()
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"} } |
Jegyzetek
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 "|" lekérdezést kell tartalmaznia, a legjobb, ha két (vagy több) regex 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: $pull feltétel 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 ] ] ] } } } } |
Igen |
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 | Jegyzetek |
---|---|---|
$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
Azure Cosmos DB nem támogatja az $eval
operátorokat és az operátorokat.
Metódusok
A következő metódusok támogatottak:
Kurzormetódusok
Metódus | Példa | Jegyzetek |
---|---|---|
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. Egyéni indexeket az Azure Cosmos DB-ben a createIndex paranccsal hozhat létre, beleértve az "egyedi" korlátozást is.
Az azure Cosmos DB-fiókokhoz egyedi indexek érhetők el a MongoDB-hez készült Azure Cosmos DB használatával.
É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 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 Azure Portalon (Kapcsolati sztringoldalon) beszerezhető írási és írásvédett jelszavakat/kulcsokat.
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 aggodalmak figyelmen kívül lesznek hagyva. 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 skálázási parancsokat, ami azt jelenti, hogy nem kell olyan parancsokat meghívnia, 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.