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

  • Article

APPLIES TO:Azure Cosmos DB for MongoDB (3.6 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, encryption at rest, backups, and much more.

Note

Version 3.6 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

The Azure Cosmos DB for MongoDB is compatible with MongoDB server version 3.6 by default for new accounts. 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. When you create Azure Cosmos DB API for MongoDB accounts, the 3.6 version of account has the endpoint in the format *.mongo.cosmos.azure.com whereas the 3.2 version of account has the endpoint in the format *.documents.azure.com.

Query language support

Azure Cosmos DB for MongoDB provides comprehensive support for MongoDB query language constructs. The following sections show the detailed list of server operations, operators, stages, commands, and options currently supported by Azure Cosmos DB.

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.

Database commands

Azure Cosmos DB for MongoDB supports the following database commands:

Query and write operation commands

CommandSupported
change streamsYes
deleteYes
evalNo
findYes
findAndModifyYes
getLastErrorYes
getMoreYes
getPrevErrorNo
insertYes
parallelCollectionScanNo
resetErrorNo
updateYes

Authentication commands

CommandSupported
authenticateYes
getnonceYes
logoutYes

Administration commands

CommandSupported
cloneCollectionAsCappedNo
collModNo
connectionStatusNo
convertToCappedNo
copydbNo
createYes
createIndexesYes
currentOpYes
dropYes
dropDatabaseYes
dropIndexesYes
filemd5Yes
killCursorsYes
killOpNo
listCollectionsYes
listDatabasesYes
listIndexesYes
reIndexYes
renameCollectionNo

Diagnostics commands

CommandSupported
buildInfoYes
collStatsYes
connPoolStatsNo
connectionStatusNo
dataSizeNo
dbHashNo
dbStatsYes
explainYes
featuresNo
hostInfoYes
listDatabasesYes
listCommandsNo
profilerNo
serverStatusNo
topNo
whatsmyuriYes

Aggregation pipeline

Aggregation commands

CommandSupported
aggregateYes
countYes
distinctYes
mapReduceNo

Aggregation stages

CommandSupported
addFieldsYes
bucketNo
bucketAutoNo
changeStreamYes
collStatsNo
countYes
currentOpNo
facetYes
geoNearYes
graphLookupYes
groupYes
indexStatsNo
limitYes
listLocalSessionsNo
listSessionsNo
lookupPartial
matchYes
outYes
projectYes
redactYes
replaceRootYes
replaceWithNo
sampleYes
skipYes
sortYes
sortByCountYes
unwindYes

Note

$lookup does not yet support the uncorrelated subqueries feature introduced in server version 3.6. You will receive an error with a message containing let is not supported if you attempt to use the $lookup operator with let and pipeline fields.

Boolean expressions

CommandSupported
andYes
notYes
orYes

Set expressions

CommandSupported
setEqualsYes
setIntersectionYes
setUnionYes
setDifferenceYes
setIsSubsetYes
anyElementTrueYes
allElementsTrueYes

Comparison expressions

Note

The API for MongoDB does not support comparison expressions with an array literal in the query.

CommandSupported
cmpYes
eqYes
gtYes
gteYes
ltYes
lteYes
neYes
inYes
ninYes

Arithmetic expressions

CommandSupported
absYes
addYes
ceilYes
divideYes
expYes
floorYes
lnYes
logYes
log10Yes
modYes
multiplyYes
powYes
sqrtYes
subtractYes
truncYes

String expressions

CommandSupported
concatYes
indexOfBytesYes
indexOfCPYes
splitYes
strLenBytesYes
strLenCPYes
strcasecmpYes
substrYes
substrBytesYes
substrCPYes
toLowerYes
toUpperYes

Text search operator

CommandSupported
metaNo

Array expressions

CommandSupported
arrayElemAtYes
arrayToObjectYes
concatArraysYes
filterYes
indexOfArrayYes
isArrayYes
objectToArrayYes
rangeYes
reverseArrayYes
reduceYes
sizeYes
sliceYes
zipYes
inYes

Variable operators

CommandSupported
mapYes
letYes

System variables

CommandSupported
$$CURRENTYes
$$DESCENDYes
$$KEEPYes
$$PRUNEYes
$$REMOVEYes
$$ROOTYes

Literal operator

CommandSupported
literalYes

Date expressions

CommandSupported
dayOfYearYes
dayOfMonthYes
dayOfWeekYes
yearYes
monthYes
weekYes
hourYes
minuteYes
secondYes
millisecondYes
dateToStringYes
isoDayOfWeekYes
isoWeekYes
dateFromPartsYes
dateToPartsYes
dateFromStringYes
isoWeekYearYes

Conditional expressions

CommandSupported
condYes
ifNullYes
switchYes

Data type operator

CommandSupported
typeYes

Accumulator expressions

CommandSupported
sumYes
avgYes
firstYes
lastYes
maxYes
minYes
pushYes
addToSetYes
stdDevPopYes
stdDevSampYes

Merge operator

CommandSupported
mergeObjectsYes

Data types

CommandSupported
DoubleYes
StringYes
ObjectYes
ArrayYes
Binary DataYes
ObjectIdYes
BooleanYes
DateYes
NullYes
32-bit Integer (int)Yes
TimestampYes
64-bit Integer (long)Yes
MinKeyYes
MaxKeyYes
Decimal128Yes
Regular ExpressionYes
JavaScriptYes
JavaScript (with scope)Yes
UndefinedYes

Indexes and index properties

Indexes

CommandSupported
Single Field IndexYes
Compound IndexYes
Multikey IndexYes
Text IndexNo
2dsphereYes
2d IndexNo
Hashed IndexNo

Index properties

CommandSupported
TTLYes
UniqueYes
PartialNo
Case InsensitiveNo
SparseNo
BackgroundYes

Operators

Logical operators

CommandSupported
orYes
andYes
notYes
norYes

Element operators

CommandSupported
existsYes
typeYes

Evaluation query operators

CommandSupported
exprYes
jsonSchemaNo
modYes
regexYes
textNo (Not supported. Use $regex instead.)
whereNo

In the $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/}] }).

Array operators

CommandSupported
allYes
elemMatchYes
sizeYes

Comment operator

CommandSupported
commentYes

Projection operators

CommandSupported
elemMatchYes
metaNo
sliceYes

Update operators

Field update operators

CommandSupported
incYes
mulYes
renameYes
setOnInsertYes
setYes
unsetYes
minYes
maxYes
currentDateYes

Array update operators

CommandSupported
$Yes
$[]Yes
$[\<identifier\>]Yes
addToSetYes
popYes
pullAllYes
pullYes
pushYes
pushAllYes

Update modifiers

CommandSupported
eachYes
sliceYes
sortYes
positionYes

Bitwise update operator

CommandSupported
bitYes
bitsAllSetNo
bitsAnySetNo
bitsAllClearNo
bitsAnyClearNo

Geospatial operators

OperatorSupported
$geoWithinYes
$geoIntersectsYes
$nearYes
$nearSphereYes
$geometryYes
$minDistanceYes
$maxDistanceYes
$centerNo
$centerSphereNo
$boxNo
$polygonNo

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.

Indexing

The API for MongoDB supports various indexes to enable sorting on multiple fields, improve query performance, and enforce uniqueness.

GridFS

Azure Cosmos DB supports GridFS through any GridFS-compatible MongoDB driver.

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.

Retryable Writes

Azure Cosmos DB doesn't yet support retryable writes. Client drivers must add retryWrites=false to their connection string.

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 addShard, balancerStart, moveChunk etc. You only need to specify the shard key while creating the containers or querying the data.

Sessions

Azure Cosmos DB doesn't yet support server-side sessions commands.

Time-to-live (TTL)

Azure Cosmos DB supports a time-to-live (TTL) based on the timestamp of the document. TTL can be enabled for collections from the Azure portal.

User and role management

Azure Cosmos DB doesn't yet support users and roles. However, it supports Azure role-based access control (Azure RBAC) and read-write and read-only passwords or keys that can be obtained through the connection string pane in the Azure portal.

Write Concern

Some applications rely on a Write Concern, which specifies the number of responses required during a write operation. Due to how Azure Cosmos DB handles replication, all writes are automatically majority quorum by default when using strong consistency. Any write concern specified by the client code is ignored. To learn more, see Using consistency levels to maximize availability and performance article.

Next steps

  • For further information check Mongo 3.6 version features
  • 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.6 version) supported features and syntax (2024)

FAQs

Is Azure Cosmos DB compatible with MongoDB? ›

Azure Cosmos DB supports MongoDB v4. 2, or MongoDB v5. 0 for vCore clusters. These versions don't support all the newer features and functionality in the versions of MongoDB available on MongoDB Atlas.

What is Azure Cosmos DB and what are its features? ›

A Definition of Azure Cosmos DB. Cosmos DB is a database service that is globally distributed. It allows you to manage your data even if you keep them in data centers that are scattered throughout the world.

Which items are supported with Azure Cosmos DB? ›

Use Azure Cosmos DB as your unified AI database for data models like relational, document, vector, key-value, graph, and table.

What is the difference between MongoDB and Cosmos DB? ›

Cosmos DB also does not support time-series data. MongoDB, on the other hand, lets you run key-value, graph, and SQL queries against the same data. And, with MongoDB 5.0, you can build and run applications with support for specific time-series data storage and query patterns.

What are the disadvantages of Cosmos DB? ›

One of the main weaknesses of Cosmos DB is that users need to be experienced to tune and configure it well. As a result you can end up with a cost over-run of Cosmos DB is not configured properly. Learning Cosmos DB takes time, it is nothing like regular SQL or MS SQL.

What is the difference between Azure DB and Cosmos DB? ›

Azure SQL is based on SQL Server engine, you can easily migrate applications and continue to use the tools, languages, and resources that you're familiar with. Azure Cosmos DB is used for web, mobile, gaming, and IoT application that needs to handle massive amounts of data, reads, and writes at a global scale.

Is Azure Cosmos DB SQL or NoSQL? ›

Azure Cosmos DB for NoSQL is a native non-relational service for working with the document data model. It can arbitrarily store native JSON documents with flexible schema. Data is indexed automatically and is available for query using a flavor of the SQL query language designed for JSON data.

What language does Cosmos DB use? ›

Items can be queried with a read-only, JSON-friendly SQL dialect. As Cosmos DB embeds a JavaScript engine, the SQL API also enables: Stored procedures. Functions that bundle an arbitrarily complex set of operations and logic into an ACID-compliant transaction.

When to use Azure Cosmos DB? ›

Azure Cosmos DB supports flexible schemas and hierarchical data, and thus it is well suited for storing product catalog data. Azure Cosmos DB is often used for event sourcing to power event driven architectures using its change feed functionality.

What API does Azure Cosmos DB support? ›

The APIs for a subset of models are available using the ARS design (MongoDB RU, NoSQL, Table, Apache Cassandra, and Apache Gremlin). Azure Cosmos DB also supports other APIs such as MongoDB vCore, Cassandra MI, or PostgreSQL.

What is the maximum database size for Azure Cosmos DB? ›

Azure Cosmos DB free tier account limits
ResourceLimit
Maximum storage for free25 GB
Maximum number of shared throughput databases5
Maximum number of containers in a shared throughput database25 In free tier accounts, the minimum RU/s for a shared throughput database with up to 25 containers is 400 RU/s.
3 more rows
Jan 8, 2024

Can we join two documents in Cosmos DB? ›

In Azure Cosmos DB for NoSQL, data is schema-free and typically denormalized. Instead of joining data across entities and sets, like you would in a relational database, joins occur within a single item. Specifically, joins are scoped to that item and can't occur across multiple items and containers.

Which database is best for MongoDB? ›

The best NoSQL database for Kotlin

MongoDB has two Kotlin drivers: the Kotlin Coroutine Driver for Kotlin applications using coroutines, and the Kotlin Sync Driver for synchronous Kotlin applications. This makes MongoDB a popular NoSQL database for Kotlin.

What is the Azure equivalent of MongoDB? ›

Azure Cosmos DB for MongoDB provides a powerful fully managed MongoDB compatible database while seamlessly integrating with the Azure ecosystem.

What is the latest version of MongoDB? ›

What's New in the Latest MongoDB Releases
  • 2024 — MongoDB 8.0 Preview. ...
  • 2023 — MongoDB 7.0. ...
  • 2022 — MongoDB 6.0. ...
  • 2020 — MongoDB 4.4. ...
  • 2019 — MongoDB 4.2. ...
  • 2018 — MongoDB 4.0. ...
  • 2017 — MongoDB 3.6. ...
  • 2016 — MongoDB 3.4.

Is MongoDB compatible with Azure? ›

MongoDB Atlas is available in 40+ Azure regions. Seamlessly add MongoDB Atlas to existing architectures via integrations with Power Apps, Power BI, Azure Synapse Analytics, and Microsoft Purview.

Does Azure Cosmos DB support NoSQL? ›

Azure Cosmos DB for NoSQL offers comprehensive SLAs across throughput, latency, consistency, and high availability for NoSQL data. This includes less than 10 millisecond write-and-read latency and 99.999 percent availability. Azure Cosmos DB for PostgreSQL offers 99.95 percent availability.

What is Azure Cosmos DB for MongoDB RBAC? ›

Azure Cosmos DB for MongoDB exposes a built-in role-based access control (RBAC) system that lets you authorize your data requests with a fine-grained, role-based permission model. Users and roles reside within a database and are managed using the Azure CLI, Azure PowerShell, or Azure Resource Manager (ARM).

How to connect MongoDB with Azure? ›

Get the MongoDB connection string by using the quick start
  1. In an Internet browser, sign in to the Azure portal.
  2. In the Azure Cosmos DB pane, select the API.
  3. In the left pane of the account pane, select Quick start.
  4. Choose your platform (. NET, Node. ...
  5. Copy and paste the code snippet into your MongoDB app.

References

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated:

Views: 6441

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.