Supported MongoDB APIs, Operations, and Data Types
Amazon DocumentDB (with MongoDB compatibility) is a fast, scalable, highly-available, and fully managed document database service that supports MongoDB workloads. Amazon DocumentDB is compatible with the MongoDB 3.6 and 4.0 APIs. This section lists the supported functionality. For support using MongoDB APIs and drivers, please consult the MongoDB Community Forums. For support using the Amazon DocumentDB service, please contact the appropriate AWS support team. For functional differences between Amazon DocumentDB and MongoDB, please see Functional Differences: Amazon DocumentDB and MongoDB.
MongoDB commands and operators that are internal-only or not applicable to a fully-managed service are not supported and are not included in the list of supported functionality.
We have added over 50+ additional capabilities since launch, and will continue to
work backwards from our customers to deliver the capabilities that they need. For
information on the most recent launches, see Amazon DocumentDB Announcements
If there is a feature that isn't supported that you'd like us to build,
let us know by sending an email with your accountID, the requested
features, and use case to the Amazon DocumentDB service team
Topics
Database Commands
Topics
Administrative Commands
| Command | 3.6 | 4.0 |
|---|---|---|
|
Capped Collections |
No |
No |
|
cloneCollectionAsCapped |
No |
No |
|
collMod |
Partial |
Partial |
|
collMod: expireAfterSeconds |
Yes |
Yes |
|
convertToCapped |
No |
No |
|
copydb |
No |
No |
|
create |
Yes |
Yes |
|
createView |
No |
No |
|
createIndexes |
Yes |
Yes |
|
currentOp |
Yes |
Yes |
|
drop |
Yes |
Yes |
|
dropDatabase |
Yes |
Yes |
|
dropIndexes |
Yes |
Yes |
|
filemd5 |
No |
No |
|
killCursors |
Yes |
Yes |
|
killOp |
Yes |
Yes |
|
listCollections |
Yes |
Yes |
|
listDatabases |
Yes |
Yes |
|
listIndexes |
Yes |
Yes |
|
reIndex |
No |
No |
|
renameCollection |
Yes |
Yes |
Aggregation
| Command | 3.6 | 4.0 |
|---|---|---|
|
aggregate |
Yes |
Yes |
|
count |
Yes |
Yes |
|
distinct |
Yes |
Yes |
|
mapReduce |
No |
No |
Authentication
| Command | 3.6 | 4.0 |
|---|---|---|
|
authenticate |
Yes |
Yes |
|
logout |
Yes |
Yes |
Diagnostic Commands
Query and Write Operations
Role Management Commands
| Command | 3.6 | 4.0 |
|---|---|---|
|
createRole |
No |
No |
|
dropRole |
No |
No |
|
dropAllRolesFromDatabase |
No |
No |
|
grantRolesToRole |
No |
No |
|
revokePrivilegesFromRole |
No |
No |
|
revokeRolesFromRole |
No |
No |
|
updateRole |
No |
No |
|
rolesInfo |
No |
No |
Sessions Commands
| Command | 3.6 | 4.0 |
|---|---|---|
|
abortTransaction |
No |
Yes |
|
commitTransaction |
No |
Yes |
|
endSessions |
No |
Yes |
|
killAllSessions |
No |
Yes |
|
killAllSessionsByPattern |
No |
No |
|
killSessions |
No |
Yes |
|
refreshSessions |
No |
No |
|
startSession |
No |
Yes |
User Management
| Command | 3.6 | 4.0 |
|---|---|---|
|
createUser |
Yes |
Yes |
|
dropAllUsersFromDatabase |
Yes |
Yes |
|
dropUser |
Yes |
Yes |
|
grantRolesToUser |
Yes |
Yes |
|
revokeRolesFromUser |
Yes |
Yes |
|
updateUser |
Yes |
Yes |
|
userInfo |
Yes |
Yes |
Query and Projection Operators
Topics
Array Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$all |
Yes |
Yes |
|
$elemMatch |
Yes |
Yes |
|
$size |
Yes |
Yes |
Bitwise Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$bitsAllSet |
Yes |
Yes |
|
$bitsAnySet |
Yes |
Yes |
|
$bitsAllClear |
Yes |
Yes |
|
$bitsAnyClear |
Yes |
Yes |
Comment Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$comment |
Yes |
Yes |
Comparison Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$eq |
Yes |
Yes |
|
$gt |
Yes |
Yes |
|
$gte |
Yes |
Yes |
|
$lt |
Yes |
Yes |
|
$lte |
Yes |
Yes |
|
$ne |
Yes |
Yes |
|
$in |
Yes |
Yes |
|
$nin |
Yes |
Yes |
Element Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$exists |
Yes |
Yes |
|
$type |
Yes |
Yes |
Evaluation Query Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$expr |
No |
No |
|
$jsonSchema |
No |
No |
|
$mod |
Yes |
Yes |
|
$regex |
Yes |
Yes |
|
$text |
No |
No |
|
$where |
No |
No |
Logical Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$or |
Yes |
Yes |
|
$and |
Yes |
Yes |
|
$not |
Yes |
Yes |
|
$nor |
Yes |
Yes |
Projection Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$ |
Yes |
Yes |
|
$elemMatch |
Yes |
Yes |
|
$meta |
No |
No |
|
$slice |
Yes |
Yes |
Update Operators
Array Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$ |
Yes |
Yes |
|
$[] |
Yes |
Yes |
|
$[<identifier>] |
Yes |
Yes |
|
$addToSet |
Yes |
Yes |
|
$pop |
Yes |
Yes |
|
$pullAll |
Yes |
Yes |
|
$pull |
Yes |
Yes |
|
$push |
Yes |
Yes |
Bitwise Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$bit |
Yes |
Yes |
Field Operators
| Operator | 3.6 | 4.0 |
|---|---|---|
|
$inc |
Yes |
Yes |
|
$mul |
Yes |
Yes |
|
$rename |
Yes |
Yes |
|
$setOnInsert |
Yes |
Yes |
|
$set |
Yes |
Yes |
|
$unset |
Yes |
Yes |
|
$min |
Yes |
Yes |
|
$max |
Yes |
Yes |
|
$currentDate |
Yes |
Yes |
Update Modifiers
| Operator | 3.6 | 4.0 |
|---|---|---|
|
$each |
Yes |
Yes |
|
$slice |
Yes |
Yes |
|
$sort |
Yes |
Yes |
|
$position |
Yes |
Yes |
Geospatial
Geometry Specifiers
| Query Selectors | 3.6 | 4.0 |
|---|---|---|
|
$box |
No |
No |
|
$center |
No |
No |
|
$centerSphere |
No |
No |
|
$nearSphere |
Yes |
Yes |
|
$geometry |
Yes |
Yes |
|
$maxDistance |
Yes |
Yes |
|
$minDistance |
Yes |
Yes |
|
$polygon |
No |
No |
|
$uniqueDocs |
No |
No |
Query Selectors
| Command | 3.6 | 4.0 |
|---|---|---|
|
$geoIntersects |
No |
No |
|
$geoWithin |
No |
No |
|
$near |
No |
No |
|
$nearSphere |
Yes |
Yes |
|
$polygon |
No |
No |
|
$uniqueDocs |
No |
No |
Cursor Methods
Topics
| Command | 3.6 | 4.0 |
|---|---|---|
|
cursor.batchSize() |
Yes |
Yes |
|
cursor.close() |
Yes |
Yes |
|
cursor.isClosed() |
Yes |
Yes |
|
cursor.collation() |
No |
No |
|
cursor.comment() |
Yes |
Yes |
|
cursor.count() |
Yes |
Yes |
|
cursor.explain() |
Yes |
Yes |
|
cursor.forEach() |
Yes |
Yes |
|
cursor.hasNext() |
Yes |
Yes |
|
cursor.hint() |
Yes |
Yes |
|
cursor.isExhausted() |
Yes |
Yes |
|
cursor.itcount() |
Yes |
Yes |
|
cursor.limit() |
Yes |
Yes |
|
cursor.map() |
Yes |
Yes |
|
cursor.maxScan() |
Yes |
Yes |
|
cursor.maxTimeMS() |
Yes |
Yes |
|
cursor.max() |
No |
No |
|
cursor.min() |
No |
No |
|
cursor.next() |
Yes |
Yes |
|
cursor.noCursorTimeout() |
No |
No |
|
cursor.objsLeftInBatch() |
Yes |
Yes |
|
cursor.pretty() |
Yes |
Yes |
|
cursor.readConcern() |
Yes |
Yes |
|
cursor.readPref() |
Yes |
Yes |
|
cursor.returnKey() |
No |
No |
|
cursor.showRecordId() |
No |
No |
|
cursor.size() |
Yes |
Yes |
|
cursor.skip() |
Yes |
Yes |
|
cursor.sort() |
Yes |
Yes |
|
cursor.tailable() |
No |
No |
|
cursor.toArray() |
Yes |
Yes |
Aggregation Pipeline Operators
Topics
- Accumulator Expressions
- Arithmetic Operators
- Array Operators
- Boolean Operators
- Comparison Operators
- Conditional Expression Operators
- Data Type Operator
- Date Operators
- Literal Operator
- Merge Operator
- Natural Operator
- Set Operators
- Stage Operators
- String Operators
- System Variables
- Text Search Operator
- Type Conversion Operators
- Variable Operators
Accumulator Expressions
| Expression | 3.6 | 4.0 |
|---|---|---|
|
$sum |
Yes |
Yes |
|
$avg |
Yes |
Yes |
|
$first |
Yes |
Yes |
|
$last |
Yes |
Yes |
|
$max |
Yes |
Yes |
|
$min |
Yes |
Yes |
|
$push |
Yes |
Yes |
|
$addToSet |
Yes |
Yes |
|
$stdDevPop |
No |
No |
|
$stdDevSamp |
No |
No |
Arithmetic Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$abs |
Yes |
Yes |
|
$add |
Yes |
Yes |
|
$ceil |
No |
No |
|
$divide |
Yes |
Yes |
|
$exp |
No |
No |
|
$floor |
No |
No |
|
$ln |
No |
No |
|
$log |
No |
No |
|
$log10 |
No |
No |
|
$mod |
Yes |
Yes |
|
$multiply |
Yes |
Yes |
|
$pow |
No |
No |
|
$sqrt |
No |
No |
|
$subtract |
Yes |
Yes |
|
$trunc |
No |
No |
Array Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$arrayElemAt |
Yes |
Yes |
|
$arrayToObject |
Yes |
Yes |
|
$concatArrays |
Yes |
Yes |
|
$filter |
Yes |
Yes |
|
$indexOfArray |
Yes |
Yes |
|
$isArray |
Yes |
Yes |
|
$objectToArray |
Yes |
Yes |
|
$range |
Yes |
Yes |
|
$reverseArray |
Yes |
Yes |
|
$reduce |
No |
No |
|
$size |
Yes |
Yes |
|
$slice |
Yes |
Yes |
|
$zip |
Yes |
Yes |
|
$in |
Yes |
Yes |
Boolean Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$and |
Yes |
Yes |
|
$or |
Yes |
Yes |
|
$not |
Yes |
Yes |
Comparison Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$cmp |
Yes |
Yes |
|
$eq |
Yes |
Yes |
|
$gt |
Yes |
Yes |
|
$gte |
Yes |
Yes |
|
$lt |
Yes |
Yes |
|
$lte |
Yes |
Yes |
|
$ne |
Yes |
Yes |
Conditional Expression Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$cond |
Yes |
Yes |
|
$ifNull |
Yes |
Yes |
|
$switch |
No |
No |
Data Type Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$type |
Yes |
Yes |
Date Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$dayOfYear |
Yes |
Yes |
|
$dayOfMonth |
Yes |
Yes |
|
$dayOfWeek |
Yes |
Yes |
|
$year |
Yes |
Yes |
|
$month |
Yes |
Yes |
|
$week |
Yes |
Yes |
|
$hour |
Yes |
Yes |
|
$minute |
Yes |
Yes |
|
$second |
Yes |
Yes |
|
$millisecond |
Yes |
Yes |
|
$dateToString |
Yes |
Yes |
|
$isoDayOfWeek |
Yes |
Yes |
|
$isoWeek |
Yes |
Yes |
|
$dateFromParts |
No |
No |
|
$dateToParts |
No |
No |
|
$dateFromString |
Yes |
Yes |
|
$isoWeekYear |
Yes |
Yes |
Literal Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$literal |
Yes |
Yes |
Merge Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$mergeObjects |
No |
No |
Natural Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$natural |
Yes |
Yes |
Set Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$setEquals |
Yes |
Yes |
|
$setIntersection |
Yes |
Yes |
|
$setUnion |
Yes |
Yes |
|
$setDifference |
No |
No |
|
$setIsSubset |
Yes |
Yes |
|
$anyElementTrue |
No |
No |
|
$allElementsTrue |
No |
No |
Stage Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$collStats |
No |
No |
|
$project |
Yes |
Yes |
|
$match |
Yes |
Yes |
|
$redact |
Yes |
Yes |
|
$limit |
Yes |
Yes |
|
$skip |
Yes |
Yes |
|
$unwind |
Yes |
Yes |
|
$group |
Yes |
Yes |
|
$sample |
Yes |
Yes |
|
$sort |
Yes |
Yes |
|
$geoNear |
Yes |
Yes |
|
$lookup |
Yes |
Yes |
|
$out |
Yes |
Yes |
|
$indexStats |
Yes |
Yes |
|
$facet |
No |
No |
|
$bucket |
No |
No |
|
$bucketAuto |
No |
No |
|
$sortByCount |
No |
No |
|
$addFields |
Yes |
Yes |
|
$replaceRoot |
Yes |
Yes |
|
$count |
Yes |
Yes |
|
$currentOp |
Yes |
Yes |
|
$listLocalSessions |
No |
No |
|
$listSessions |
No |
No |
|
$graphLookup |
No |
No |
String Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$concat |
Yes |
Yes |
|
$indexOfBytes |
Yes |
Yes |
|
$indexOfCP |
Yes |
Yes |
|
$ltrim |
No |
No |
|
$rtrim |
No |
No |
|
$split |
Yes |
Yes |
|
$strcasecmp |
Yes |
Yes |
|
$strLenBytes |
Yes |
Yes |
|
$strLenCP |
Yes |
Yes |
|
$substr |
Yes |
Yes |
|
$substrBytes |
Yes |
Yes |
|
$substrCP |
Yes |
Yes |
|
$toLower |
Yes |
Yes |
|
$toUpper |
Yes |
Yes |
|
$trim |
No |
No |
System Variables
| Command | 3.6 | 4.0 |
|---|---|---|
|
$$CURRENT |
No |
No |
|
$$DESCEND |
Yes |
Yes |
|
$$KEEP |
Yes |
Yes |
|
$$PRUNE |
Yes |
Yes |
|
$$REMOVE |
No |
No |
|
$$ROOT |
Yes |
Yes |
Text Search Operator
| Command | 3.6 | 4.0 |
|---|---|---|
|
$meta |
No |
No |
Type Conversion Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$convert |
No |
No |
|
$toBool |
No |
No |
|
$toDate |
No |
No |
|
$toDecimal |
No |
No |
|
$toDouble |
No |
No |
|
$toInt |
No |
No |
|
$toLong |
No |
No |
|
$toObjectId |
No |
No |
|
$toString |
No |
No |
Variable Operators
| Command | 3.6 | 4.0 |
|---|---|---|
|
$map |
Yes |
Yes |
|
$let |
No |
No |
Data Types
| Command | 3.6 | 4.0 |
|---|---|---|
|
Double |
Yes |
Yes |
|
String |
Yes |
Yes |
|
Object |
Yes |
Yes |
|
Array |
Yes |
Yes |
|
Binary Data |
Yes |
Yes |
|
ObjectId |
Yes |
Yes |
|
Boolean |
Yes |
Yes |
|
Date |
Yes |
Yes |
|
Null |
Yes |
Yes |
|
32-bit Integer (int) |
Yes |
Yes |
|
Timestamp |
Yes |
Yes |
|
64-bit Integer (long) |
Yes |
Yes |
|
MinKey |
Yes |
Yes |
|
MaxKey |
Yes |
Yes |
|
Decimal128 |
No |
No |
|
Regular Expression |
Yes |
Yes |
|
JavaScript |
No |
No |
|
JavaScript (with scope) |
No |
No |
|
Undefined |
No |
No |
|
Symbol |
No |
No |
|
DBPointer |
No |
Indexes and Index Properties
Topics
Indexes
| Command | 3.6 | 4.0 |
|---|---|---|
|
Single Field Index |
Yes |
Yes |
|
Compound Index |
Yes |
Yes |
|
Multikey Index |
Yes |
Yes |
|
Text Index |
No |
No |
|
2dsphere |
Yes |
Yes |
|
2d Index |
No |
No |
|
Hashed Index |
No |
No |
Index Properties
| Command | 3.6 | 4.0 |
|---|---|---|
|
TTL |
Yes |
Yes |
|
Unique |
Yes |
Yes |
|
Partial |
No |
No |
|
Case Insensitive |
No |
No |
|
Sparse |
Yes |
Yes |
|
Background |
Yes |
Yes |

