This article describes the MongoDB features used in Countly, so it can be compared with alternative DB providers to assess their support.
MongoDB Features
| Feature | Scope | Mandatory | Version | Comments |
| Bulk Operations (ordered and unordered) | Core | Yes | All | |
| Capped Collections | Request Logs, Push | No | 15.03 | Must disable plugin(s) to work without the feature |
| Change Streams | Core | No | Planned for the future | |
| GridFS | Core | No | 17.05 | Without it, the app icon, user image, and symbolication upload will not work on Countly multi server setup |
| Tailable Cursor | Core, Push | Yes | 19.02 |
Database Methods
(http://mongodb.github.io/node-mongodb-native/3.6/api/Db.html)
| Feature | Scope | Mandatory | Version | Comments |
| buildInfo | Core | Yes | All | |
| collection | Core | Yes | All | |
| command | Core | Yes | All | |
| convertToCapped | Upgrade scripts | No | 15.03 | |
| currentOp |
Core | Yes | Planned for the future | |
| killOp |
Core | Yes | Planned for the future | |
| listCollections |
DBViewer, Upgrade sctips | Yes | 15.03 | |
| renameCollection |
Upgrade scripts | No | All | Will result in longer, more complex upgrades |
| stats | DB Viewer | No | Planned for the future |
Collection Methods
(http://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html)
| Feature | Scope | Mandatory | Version |
| aggregate | Core | Yes | All |
| bulkWrite | Core | Yes | All |
| count | Core | Yes | All |
| createIndexes |
Core | Yes | All |
| deleteMany | Core | Yes | All |
| deleteOne | Core | Yes | All |
| drop |
Core | Yes | All |
| dropIndexes |
Upgrade scripts | Yes | All |
| estimatedDocumentCount | Core | Yes | All |
| find | Core | Yes | All |
| findOne | Core | Yes | All |
| findAndModify |
Core | Yes | All |
| findAndRemove | Core | Yes | All |
| findOneAndDelete | Core | Yes | All |
| findOneAndReplace | Core | Yes | All |
| findOneAndUpdate | Core | Yes | All |
| insertOne | Core | Yes | All |
| insertMany | Core | Yes | All |
| replaceOne | Core | Yes | All |
| stream | Core | Yes | All |
| watch | Core | Yes | All |
Cursor Methods
(http://mongodb.github.io/node-mongodb-native/3.6/api/Cursor.html)
| Feature | Scope | Mandatory | Version |
| batchSize | Core | Yes | All |
| close | Core | Yes | All |
| count | Core | Yes | All |
| forEach | Core | Yes | All |
| hasNext | Core | Yes | All |
| limit | Core | Yes | All |
| next | Core | Yes | All |
| project | Core | Yes | All |
| skip | Core | Yes | All |
| sort | Core | Yes | All |
| stream | Core | Yes | All |
| toArray | Core | Yes | All |
Index types
(https://docs.mongodb.com/manual/indexes/#index-types)
| Feature | Scope | Mandatory | Version | Comments |
| Background | Core | Yes | All | |
| Compound Indexes | Core | Yes | All | |
| Hash Index | Sharding | No | All | Needed if database is sharded |
| Multikey Indexes | Core | Yes | All | |
| Unique | Core | Yes | All | |
| Text Indexes | User Profiles | No | 15.03 | Without it, searching user profiles by name/email will not work |
| TTL | Drill | No | All | Used for data expiration |
Operators
Query operators
(https://docs.mongodb.com/manual/reference/operator/query/)
| Feature | Scope | Mandatory | Version | Comments/Commands |
| All Comparison Operators | Core | Yes | All | $eq, $gt, $gte, $in, $lt, $lte, $ne, $nin |
|
All Logical Operators |
Core | Yes | All | $and, $not, $nor, $or |
|
Array Query Operators |
Core | Yes | All | $all, $elemMatch, $size |
|
Projection Operators |
Core | Yes | All | $, $elemMatch, $slice |
|
$exists |
Core | Yes | All | |
|
$regex |
Core | Yes | All | |
|
$text |
User Profiles | No | 15.03 | Without it, searching user profiles by name/email will not work |
|
$comment |
Core | Yes | Planned for the future | |
|
Bitwise Operators |
Push | Yes | ~18 |
$bit, $bitsAllSet, $bitsAllClear
|
Update operators
(https://docs.mongodb.com/manual/reference/operator/update/)
| Feature | Scope | Mandatory | Version | Commands |
| Field Operators | Core | Yes | All | $inc, $min ,$max, $mul, $set, $setOnInsert, $unset |
| Array Operators | Core | Yes | All | $, $[], $[<identifier>], $addToSet, $pop, $pull, $push, $pullAll |
| Array Operator Modifiers | Core | Yes | All | $each, $position, $slice |
Aggregation pipeline stage operators
(https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/)
| Feature | Scope | Mandatory | Version | Comments |
| $addFields | Core | Yes | 20.04 | |
| $count | Core | Yes | All | |
| $facet | Core | Yes | 20.04 | |
| $group | Core | Yes | All | |
| $limit | Core | Yes | All | |
| $lookup | Push, Views | Yes | 20.04 | Must disable plugin(s) to work without the operator |
| $match | Core | Yes | All | |
| $project | Core | Yes | All | |
| $replaceRoot | Retention | Yes | 20.04 | Needs it for segmentation queries and event retention |
| $sample | Flows | Yes | 20.04 | Must disable plugin(s) to work without the operator |
| $skip | Core | Yes | All | |
| $sort | Core | Yes | All | |
| $unionWith | Cohorts | Yes | 20.11.2 | |
| $unwind | Core | Yes | All |
Aggregation pipeline operators
(https://docs.mongodb.com/manual/reference/operator/aggregation/)
| Feature | Scope | Mandatory | Version | Commands |
| Arithmetic Expression Operators | Drill, Dataviews | Yes | 20.04 | $add, $subtract, $multiply, $divide |
| Array Expression Operators | Dataviews | No | Planned for the upcoming major release this year | $arrayElemAt, $arrayToObject, $concatArrays, $filter, $first, $in, $indexOfArray, $isArray, $map, $objectToArray, $range, $reduce, $size, $slice, $zip |
| Boolean Expression Operators | Core | Yes | All | $and, $or, $not |
| Comparison Expression Operators | Core | Yes | All | $cmp, $eq, $gt, $gte, $lt, $lte, $ne |
| Conditional Expression Operators | Core | Yes | 20.04 | $cond, $ifNull, $switch |
| Object Expression Operators | Performance monitoring, Views, Drill | Yes | 20.04 | $mergeObjects, $objectToArray |
| Set Expression Operators | Cohorts (before 20.11), Dataviews | No | Planned for the upcoming major release this year | $setDifference, $setEquals, $setIntersection, $setIsSubset, $setUnion |
| String Expression Operators | Core | Yes | 19.02 | $concat, $split |
| Accumulators ($group) | Core | Yes | All | $addToSet, $avg, $first, $max, $mergeObjects, $min, $push, $sum |
| Variable Expression Operators | Dataviews | No | Planned for the future | $let |