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 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.
Database Commands
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 |
No |
No |
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
| Command |
3.6 |
4.0 |
| buildInfo |
Yes |
Yes |
| collStats |
Yes |
Yes |
| connPoolStats |
No |
No |
| connectionStatus |
Yes |
Yes |
| dataSize |
Yes |
Yes |
| dbHash |
No |
No |
| dbStats |
Yes |
Yes |
| explain |
Yes |
Yes |
| explain: executionStats |
Yes |
Yes |
| features |
No |
No |
| hostInfo |
Yes |
Yes |
| listCommands |
Yes |
Yes |
| profiler |
Yes |
Yes |
| serverStatus |
Yes |
Yes |
| top |
Yes |
Yes |
Query and Write Operations
| Command |
3.6 |
4.0 |
| delete |
Yes |
Yes |
| find |
Yes |
Yes |
| findAndModify |
Yes |
Yes |
| getLastError |
No |
No |
| getMore |
Yes |
Yes |
| getPrevError |
No |
No |
| insert |
Yes |
Yes |
| parallelCollectionScan |
No |
No |
| resetError |
No |
No |
| update |
Yes |
Yes |
| Change streams |
Yes |
Yes |
| GridFS |
No |
|
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
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 |
| 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 |
| $[] |
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 |
No |
No |
| $geometry |
No |
No |
| $maxDistance |
No |
No |
| $minDistance |
No |
No |
| $polygon |
No |
No |
| $uniqueDocs |
No |
No |
Query Selectors
| Command |
3.6 |
4.0 |
| $geoIntersects |
No |
No |
| $geoWithin |
No |
No |
| $near |
No |
No |
| $nearSphere |
No |
No |
| $polygon |
No |
No |
| $uniqueDocs |
No |
No |
Cursor Methods
| 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
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 |
No |
No |
| $isArray |
Yes |
Yes |
| $objectToArray |
Yes |
Yes |
| $range |
Yes |
Yes |
| $reverseArray |
No |
No |
| $reduce |
No |
No |
| $size |
Yes |
Yes |
| $slice |
Yes |
Yes |
| $zip |
No |
No |
| $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 |
No |
No |
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 |
No |
No |
Merge Operator
| Command |
3.6 |
4.0 |
| $mergeObjects |
No |
No |
Natural Operator
| Command |
3.6 |
4.0 |
| $natural |
No |
No |
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 |
No |
No |
| $lookup |
Yes |
Yes |
| $out |
Yes |
Yes |
| $indexStats |
Yes |
Yes |
| $facet |
No |
No |
| $bucket |
No |
No |
| $bucketAuto |
No |
No |
| $sortByCount |
No |
No |
| $addFields |
Yes |
No |
| $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 |
No |
No |
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 |
No |
No |
| $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 |
No |
No |
| JavaScript |
No |
No |
| JavaScript (with scope) |
No |
No |
| Undefined |
No |
No |
| Symbol |
No |
No |
| DBPointer |
No |
|
Indexes and Index Properties
Indexes
| Command |
3.6 |
4.0 |
| Single Field Index |
Yes |
Yes |
| Compound Index |
Yes |
Yes |
| Multikey Index |
Yes |
Yes |
| Text Index |
No |
No |
| 2dsphere |
No |
No |
| 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 |