Azure Cosmos DB for MongoDB (3.2 version) supported features and syntax (2024)

  • Article

APPLIES TO:Azure Cosmos DB for MongoDB (3.2 version) supported features and syntax (1)MongoDB

Azure Cosmos DB is Microsoft's globally distributed multi-model database service. You can communicate with the Azure Cosmos DB for MongoDB using any of the open-source MongoDB client drivers. The Azure Cosmos DB for MongoDB enables the use of existing client drivers by adhering to the MongoDB wire protocol.

By using the Azure Cosmos DB for MongoDB, you can enjoy the benefits of the MongoDB you're used to, with all of the enterprise capabilities that Azure Cosmos DB provides: global distribution, automatic sharding, availability and latency guarantees, automatic indexing of every field, encryption at rest, backups, and much more.

Note

Version 3.2 of the Azure Cosmos DB for MongoDB has no current plans for end-of-life (EOL). The minimum notice for a future EOL is three years.

Protocol Support

All new accounts for Azure Cosmos DB for MongoDB are compatible with MongoDB server version 3.6. This article covers MongoDB version 3.2. The supported operators and any limitations or exceptions are listed below. Any client driver that understands these protocols should be able to connect to Azure Cosmos DB for MongoDB.

Azure Cosmos DB for MongoDB also offers a seamless upgrade experience for qualifying accounts. Learn more on the MongoDB version upgrade guide.

Query language support

Azure Cosmos DB for MongoDB provides comprehensive support for MongoDB query language constructs. Below you can find the detailed list of currently supported operations, operators, stages, commands, and options.

Database commands

Azure Cosmos DB for MongoDB supports the following database commands:

Note

This article only lists the supported server commands and excludes client-side wrapper functions. Client-side wrapper functions such as deleteMany() and updateMany() internally utilize the delete() and update() server commands. Functions utilizing supported server commands are compatible with Azure Cosmos DB for MongoDB.

Query and write operation commands

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

Authentication commands

  • logout
  • authenticate
  • getnonce

Administration commands

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

Diagnostics commands

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

Aggregation pipeline

Aggregation commands

  • aggregate
  • count
  • distinct

Aggregation stages

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

Aggregation expressions

Boolean expressions

  • $and
  • $or
  • $not

Set expressions

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

Comparison expressions

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

Arithmetic expressions

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

String expressions

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

Array expressions

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

Date expressions

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

Conditional expressions

  • $cond
  • $ifNull

Aggregation accumulators

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

Operators

Following operators are supported with corresponding examples of their use. Consider this sample document used in the queries below:

{ "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"}
OperatorExample
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"} }

Notes

In $regex queries, Left-anchored expressions allow index search. However, using 'i' modifier (case-insensitivity) and 'm' modifier (multiline) causes the collection scan in all expressions.When there's a need to include '$' or '|', it's best to create two (or more) regex queries.For example, given the following original query: find({x:{$regex: /^abc$/}), it has to be modified as follows:find({x:{$regex: /^abc/, x:{$regex:/^abc$/}}).The first part will use the index to restrict the search to those documents beginning with ^abc and the second part will match the exact entries.The bar operator '|' acts as an "or" function - the query find({x:{$regex: /^abc|^def/}) matches the documents in which field 'x' has values that begin with "abc" or "def". To utilize the index, it's recommended to break the query into two different queries joined by the $or operator: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Update operators

Field update operators

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

Array update operators

  • $addToSet
  • $pop
  • $pullAll
  • $pull (Note: $pull with condition isn't supported)
  • $pushAll
  • $push
  • $each
  • $slice
  • $sort
  • $position

Bitwise update operator

  • $bit

Geospatial operators

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

Sort Operations

When you use the findOneAndUpdate operation, sort operations on a single field are supported, but sort operations on multiple fields aren't supported.

Other operators

OperatorExampleNotes
$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"}
$textNot supported. Use $regex instead.

Unsupported operators

The $where and the $eval operators aren't supported by Azure Cosmos DB.

Methods

Following methods are supported:

Cursor methods

MethodExampleNotes
cursor.sort()cursor.sort({ "Elevation": -1 })Documents without sort key don't get returned

Unique indexes

Azure Cosmos DB indexes every field in documents that are written to the database by default. Unique indexes ensure that a specific field doesn't have duplicate values across all documents in a collection, similar to the way uniqueness is preserved on the default _id key. You can create custom indexes in Azure Cosmos DB by using the createIndex command, including the 'unique' constraint.

Unique indexes are available for all Azure Cosmos DB accounts using Azure Cosmos DB for MongoDB.

Time-to-live (TTL)

Azure Cosmos DB only supports a time-to-live (TTL) at the collection level (_ts) in version 3.2. Upgrade to versions 3.6+ to take advantage of other forms of TTL.

User and role management

Azure Cosmos DB doesn't yet support users and roles. However, Azure Cosmos DB supports Azure role-based access control (Azure RBAC) and read-write and read-only passwords/keys that can be obtained through the Azure portal (Connection String page).

Replication

Azure Cosmos DB supports automatic, native replication at the lowest layers. This logic is extended out to achieve low-latency, global replication as well. Azure Cosmos DB doesn't support manual replication commands.

Write Concern

Some applications rely on a Write Concern that specifies the number of responses required during a write operation. Due to how Azure Cosmos DB handles replication in the background all writes are automatically Quorum by default. Any write concern specified by the client code is ignored. Learn more in Using consistency levels to maximize availability and performance.

Sharding

Azure Cosmos DB supports automatic, server-side sharding. It manages shard creation, placement, and balancing automatically. Azure Cosmos DB doesn't support manual sharding commands, which means you don't have to invoke commands such as shardCollection, addShard, balancerStart, moveChunk etc. You only need to specify the shard key while creating the containers or querying the data.

Next steps

  • Learn how to use Studio 3T with Azure Cosmos DB for MongoDB.
  • Learn how to use Robo 3T with Azure Cosmos DB for MongoDB.
  • Explore MongoDB samples with Azure Cosmos DB for MongoDB.
Azure Cosmos DB for MongoDB (3.2 version) supported features and syntax (2024)
Top Articles
Second Chance Love (Second Chance, #4)
Fantasy football breakouts for all 32 NFL teams, led by Bijan Robinson, Jameson Williams
Evil Dead Movies In Order & Timeline
Kem Minnick Playboy
My Arkansas Copa
Nco Leadership Center Of Excellence
Tyson Employee Paperless
Apex Rank Leaderboard
Shorthand: The Write Way to Speed Up Communication
What Auto Parts Stores Are Open
Kostenlose Games: Die besten Free to play Spiele 2024 - Update mit einem legendären Shooter
New Day Usa Blonde Spokeswoman 2022
A.e.a.o.n.m.s
Methodist Laborworkx
Housework 2 Jab
Vanessa West Tripod Jeffrey Dahmer
Roll Out Gutter Extensions Lowe's
SF bay area cars & trucks "chevrolet 50" - craigslist
PowerXL Smokeless Grill- Elektrische Grill - Rookloos & geurloos grillplezier - met... | bol
Healthier Homes | Coronavirus Protocol | Stanley Steemer - Stanley Steemer | The Steem Team
Diakimeko Leaks
Azur Lane High Efficiency Combat Logistics Plan
Bidevv Evansville In Online Liquid
Elbert County Swap Shop
Spiritual Meaning Of Snake Tattoo: Healing And Rebirth!
Pensacola Tattoo Studio 2 Reviews
Mikayla Campinos: Unveiling The Truth Behind The Leaked Content
Craigslist Comes Clean: No More 'Adult Services,' Ever
Tottenham Blog Aggregator
Worthington Industries Red Jacket
Kamzz Llc
How Much Is An Alignment At Costco
Frommer's Belgium, Holland and Luxembourg (Frommer's Complete Guides) - PDF Free Download
Quality Tire Denver City Texas
Tamilyogi Ponniyin Selvan
Rocketpult Infinite Fuel
Directions To 401 East Chestnut Street Louisville Kentucky
Hisense Ht5021Kp Manual
دانلود سریال خاندان اژدها دیجی موویز
How To Get Soul Reaper Knife In Critical Legends
Eastern New Mexico News Obituaries
Check From Po Box 1111 Charlotte Nc 28201
Questions answered? Ducks say so in rivalry rout
ESA Science & Technology - The remarkable Red Rectangle: A stairway to heaven? [heic0408]
War Room Pandemic Rumble
Unit 11 Homework 3 Area Of Composite Figures
Graduation Requirements
Ark Silica Pearls Gfi
The Significance Of The Haitian Revolution Was That It Weegy
683 Job Calls
One Facing Life Maybe Crossword
Syrie Funeral Home Obituary
Latest Posts
Article information

Author: Neely Ledner

Last Updated:

Views: 6040

Rating: 4.1 / 5 (62 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Neely Ledner

Birthday: 1998-06-09

Address: 443 Barrows Terrace, New Jodyberg, CO 57462-5329

Phone: +2433516856029

Job: Central Legal Facilitator

Hobby: Backpacking, Jogging, Magic, Driving, Macrame, Embroidery, Foraging

Introduction: My name is Neely Ledner, I am a bright, determined, beautiful, adventurous, adventurous, spotless, calm person who loves writing and wants to share my knowledge and understanding with you.