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 |