Share via


Azure Cosmos DB for MongoDB (version 3.2): Funktioner och syntax som stöds

GÄLLER FÖR: Mongodb

Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera datamodeller. Du kan kommunicera med Azure Cosmos DB för MongoDB med någon av MongoDB-klientdrivrutinerna med öppen källkod. Med Azure Cosmos DB for MongoDB kan du använda befintliga klientdrivrutiner genom att följa MongoDB-trådprotokollet.

Genom att använda Azure Cosmos DB for MongoDB kan du dra nytta av fördelarna med den MongoDB som du är van vid, med alla företagsfunktioner som Azure Cosmos DB tillhandahåller: global distribution, garantier för automatisk horisontell partitionering, tillgänglighet och svarstid, automatisk indexering av varje fält, kryptering i vila, säkerhetskopior och mycket mer.

Anteckning

Version 3.2 av Azure Cosmos DB for MongoDB har inga aktuella planer för slutet av livscykeln (EOL). Minsta varsel för en framtida EOL är tre år.

Protokollstöd

Alla nya konton för Azure Cosmos DB for MongoDB är kompatibla med MongoDB-serverversion 3.6. Den här artikeln beskriver MongoDB version 3.2. De operatorer som stöds och eventuella begränsningar eller undantag anges nedan. Alla klientdrivrutiner som förstår dessa protokoll bör kunna ansluta till Azure Cosmos DB för MongoDB.

Azure Cosmos DB for MongoDB erbjuder också en sömlös uppgraderingsupplevelse för kvalificerande konton. Läs mer i uppgraderingsguiden för MongoDB-versionen.

Stöd för frågespråk

Azure Cosmos DB for MongoDB har omfattande stöd för mongoDB-frågespråkskonstruktioner. Nedan hittar du en detaljerad lista över åtgärder som stöds för närvarande, operatorer, faser, kommandon och alternativ.

Databaskommandon

Azure Cosmos DB for MongoDB stöder följande databaskommandon:

Anteckning

Den här artikeln innehåller endast serverkommandon som stöds och exkluderar omslutningsfunktioner på klientsidan. Omslutningsfunktioner på klientsidan, till exempel deleteMany() och internt, använder delete() - och updateMany()update() -serverkommandona. Funktioner som använder serverkommandon som stöds är kompatibla med Azure Cosmos DB för MongoDB.

Fråga och skriv-åtgärdskommandon

  • delete
  • find
  • findAndModify
  • getLastError
  • getMore
  • insert
  • update

Autentiseringskommandon

  • logout
  • authenticate
  • getnonce

Administrationskommandon

  • dropDatabase
  • listCollections
  • drop
  • create
  • filemd5
  • createIndexes
  • listIndexes
  • dropIndexes
  • connectionStatus
  • reIndex

Diagnostiska kommandon

  • buildInfo
  • collStats
  • dbStats
  • hostInfo
  • listDatabases
  • whatsmyuri

Sammansättningspipeline

Sammansättningskommandon

  • aggregate
  • count
  • distinct

Sammansättningsfaser

  • $project
  • $match
  • $limit
  • $skip
  • $unwind
  • $group
  • $sample
  • $sort
  • $lookup
  • $out
  • $count
  • $addFields

Sammansättningsuttryck

Booleska uttryck

  • $and
  • $or
  • $not

Uttryck för angivelse

  • $setEquals
  • $setIntersection
  • $setUnion
  • $setDifference
  • $setIsSubset
  • $anyElementTrue
  • $allElementsTrue

Jämförelseuttryck

  • $cmp
  • $eq
  • $gt
  • $gte
  • $lt
  • $lte
  • $ne

Aritmetiska uttryck

  • $abs
  • $add
  • $ceil
  • $divide
  • $exp
  • $floor
  • $ln
  • $log
  • $log10
  • $mod
  • $multiply
  • $pow
  • $sqrt
  • $subtract
  • $trunc

Stränguttryck

  • $concat
  • $indexOfBytes
  • $indexOfCP
  • $split
  • $strLenBytes
  • $strLenCP
  • $strcasecmp
  • $substr
  • $substrBytes
  • $substrCP
  • $toLower
  • $toUpper

Matrisuttryck

  • $arrayElemAt
  • $concatArrays
  • $filter
  • $indexOfArray
  • $isArray
  • $range
  • $reverseArray
  • $size
  • $slice
  • $in

Datumuttryck

  • $dayOfYear
  • $dayOfMonth
  • $dayOfWeek
  • $year
  • $month
  • $week
  • $hour
  • $minute
  • $second
  • $millisecond
  • $isoDayOfWeek
  • $isoWeek

Villkorliga uttryck

  • $cond
  • $ifNull

Sammansättningsackumulatorer

  • $sum
  • $avg
  • $first
  • $last
  • $max
  • $min
  • $push
  • $addToSet

Operatorer

Följande operatorer stöds med motsvarande användningsexempel. Överväg det här exempeldokumentet som används i frågorna nedan:

{
  "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"
}
Operator Exempel
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"} }

Anteckningar

I $regex-frågor, tillåter vänsterförankrade uttryck indexsökning. Om du använder modifierarna i (skiftlägesokänsligt) och m (flera rader) så får du dock samlingsskanningen i alla uttryck. När du behöver inkludera "$" eller "|" är det bäst att skapa två (eller fler) regex-frågor. Med till exempel följande ursprungliga fråga: find({x:{$regex: /^abc$/}) så måste den ändras på följande sätt: find({x:{$regex: /^abc/, x:{$regex:/^abc$/}}). Den första delen använder indexet för att begränsa sökningen till dokument som börjar med ^abc och den andra delen matchar de exakta posterna. Fält-operatorn | fungerar som en or-funktion – frågan find({x:{$regex: /^abc|^def/}) matchar dokumenten där fältet x har värden som börjar med abc eller def. Om du vill använda indexet så rekommenderar vi att du delar upp frågan i två olika frågor anslutna med operatorn $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Uppdateringsoperatorer

Fältuppdateringsoperatorer

  • $inc
  • $mul
  • $rename
  • $setOnInsert
  • $set
  • $unset
  • $min
  • $max
  • $currentDate

Matrisuppdateringsoperatorer

  • $addToSet
  • $pop
  • $pullAll
  • $pull (Obs! $pull med villkor stöds inte)
  • $pushAll
  • $push
  • $each
  • $slice
  • $sort
  • $position

Binär uppdateringsoperator

  • $bit

Geospatiala operatorer

Operator Exempel Stöds
$geoWithin { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } Ja
$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 ] ] ] } } } } Ja
$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 ] ] ] } } } } Ja
$nearSphere { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } Ja
$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 ] ] ] } } } } Ja
$minDistance { "Location.coordinates": { $nearSphere : { $geometry: {type: "Point", coordinates: [ -121, 46 ]}, $minDistance: 1000, $maxDistance: 1000000 } } } Ja
$maxDistance { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } Ja
$center { "Location.coordinates": { $geoWithin: { $center: [ [-121, 46], 1 ] } } } Ja
$centerSphere { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } Ja
$box { "Location.coordinates": { $geoWithin: { $box: [ [ 0, 0 ], [ -122, 47 ] ] } } } Ja
$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 ] ] ] } } } } Ja

Sortera åtgärder

När du använder findOneAndUpdate åtgärden stöds sorteringsåtgärder i ett enda fält, men sorteringsåtgärder på flera fält stöds inte.

Andra operatorer

Operator Exempel Anteckningar
$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 Stöds inte. Använd $regex i stället.

Operatorer som inte stöds

Operatorerna $where$eval och stöds inte av Azure Cosmos DB.

Metoder

Följande metoder stöds:

Markör-metoder

Metod Exempel Anteckningar
cursor.sort() cursor.sort({ "Elevation": -1 }) Dokument utan sorteringsnyckel returneras inte

Unika index

Azure Cosmos DB indexerar som standard varje fält i dokument som skrivs till databasen. Unika index säkerställer att ett visst fält inte har dubblettvärden i alla dokument i en samling, på samma sätt som unikhet bevaras på standardnyckeln _id . Du kan skapa anpassade index i Azure Cosmos DB med hjälp av kommandot createIndex, inklusive villkoret "unik".

Unika index är tillgängliga för alla Azure Cosmos DB-konton som använder Azure Cosmos DB för MongoDB.

TTL-värde (time to live)

Azure Cosmos DB stöder endast time to live (TTL) på samlingsnivå (_ts) i version 3.2. Uppgradera till version 3.6+ för att dra nytta av andra former av TTL.

Användar- och rollhantering

Azure Cosmos DB har ännu inte stöd för användare och roller. Azure Cosmos DB har dock stöd för rollbaserad åtkomstkontroll i Azure (Azure RBAC) och skrivskyddade och skrivskyddade lösenord/nycklar som kan hämtas via Azure Portal (sidan Anslutningssträng).

Replikering

Azure Cosmos DB stöder automatisk, inbyggd replikering på de understa lagren. Denna logik utökas för att även uppnå global replikering med låga svarstider. Azure Cosmos DB stöder inte manuella replikeringskommandon.

Skrivanmärkningar

Vissa program förlitar sig på ett skrivproblem som anger antalet svar som krävs under en skrivåtgärd. På grund av hur Azure Cosmos DB hanterar replikering i bakgrunden är alla skrivningar automatiskt kvorum som standard. Skrivanmärkningar som anges av klientkoden ignoreras. Läs mer om hur du maximerar tillgänglighet och prestanda med hjälp av konsekvensnivåer.

Horisontell partitionering

Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar automatiskt skapande, placering och utjämning av fragment. Azure Cosmos DB stöder inte manuella kommandon för horisontell partitionering, vilket innebär att du inte behöver anropa kommandon som shardCollection, addShard, balancerStart, moveChunk osv. Du behöver bara ange shardnyckeln när du skapar containrarna eller frågar efter data.

Nästa steg

  • Lär dig hur du använder Studio 3T med Azure Cosmos DB för MongoDB.
  • Lär dig hur du använder Robo 3T med Azure Cosmos DB för MongoDB.
  • Utforska MongoDB-exempel med Azure Cosmos DB for MongoDB.