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