The following tables include a breakdown of MongoDB 4.0 features supported by
Cloud Firestore. For differences in behavior, see
Behavior differences.
Query and projection operators
Cloud Firestore supports the following query and projection operators:
Array operators
| Operator |
Supported |
$all |
Yes |
$elemMatch |
Yes |
$size |
Yes |
Bitwise operators
| Operator |
Supported |
$bitsAllClear |
No |
$bitsAllSet |
No |
$bitsAnyClear |
No |
$bitsAnySet |
No |
| Operator |
Supported |
$comment |
No |
Comparison operators
| Operator |
Supported |
$eq |
Yes |
$gt |
Yes |
$gte |
Yes |
$in |
Yes |
$lt |
Yes |
$lte |
Yes |
$ne |
Yes |
$nin |
Yes |
Element operators
| Operator |
Supported |
$exists |
Yes |
$type |
Yes |
Evaluation query operators
| Operator |
Supported |
$expr |
Yes |
$jsonSchema |
No |
$mod |
Yes |
$regex |
Yes |
$text |
No |
$where |
No |
Logical operators
| Operator |
Supported |
$and |
Yes |
$nor |
Yes |
$not |
Yes |
$or |
Yes |
Projection operators
| Operator |
Supported |
$ |
Yes |
$elemMatch |
Yes |
$meta |
No |
$slice |
Yes |
Update operators
Cloud Firestore supports the following update operators.
Array operators
| Operator |
Supported |
$ |
Yes |
$[] |
Yes |
$[<identifier>] |
Yes |
$addToSet |
Yes |
$pop |
Yes |
$pull |
Yes |
$pullAll |
Yes |
$push |
Yes |
Bitwise operators
| Operator |
Supported |
$bit |
Yes |
Field operators
| Operator |
Supported |
$currentDate |
Yes |
$inc |
Yes |
$max |
Yes |
$min |
Yes |
$mul |
Yes |
$rename |
Yes |
$setOnInsert |
Yes |
Update modifiers
| Modifier |
Supported |
$each |
Yes |
$position |
Yes |
$slice |
Yes |
$sort |
Yes |
Aggregation pipeline operators
Cloud Firestore supports the following aggregation pipeline operators.
Accumulators
| Expression |
Supported |
$addToSet |
Yes |
$avg |
Yes |
$count |
Yes |
$first |
Yes |
$last |
Yes |
$max |
Yes |
$mergeObjects |
Yes |
$min |
Yes |
$push |
Yes |
$stdDevPop |
No |
$stdDevSamp |
No |
$sum |
Yes |
Accumulator expressions
| Expression |
Supported |
$avg |
Yes |
$first |
Yes |
$last |
Yes |
$max |
Yes |
$min |
Yes |
$stdDevPop |
No |
$stdDevSamp |
No |
$sum |
Yes |
Arithmetic operators
Limitations: Arithmetic operators don't support decimal128 values.
| Operator |
Supported |
$abs |
Yes |
$add |
Yes |
$ceil |
Yes |
$divide |
Yes |
$exp |
Yes |
$floor |
Yes |
$ln |
Yes |
$log |
Yes |
$log10 |
Yes |
$mod |
Yes |
$multiply |
Yes |
$pow |
Yes |
$sqrt |
Yes |
$subtract |
Yes |
$trunc |
Yes |
Array operators
| Operator |
Supported |
$arrayElemAt |
Yes |
$arrayToObject |
Yes |
$concatArrays |
Yes |
$filter |
Yes |
$firstN |
Yes |
$in |
Yes |
$indexOfArray |
Yes |
$isArray |
Yes |
$map |
Yes |
$objectToArray |
Yes |
$range |
Yes |
$reduce |
Yes |
$reverseArray |
Yes |
$size |
Yes |
$slice |
Yes |
$zip |
Yes |
Boolean operators
| Operator |
Supported |
$and |
Yes |
$not |
Yes |
$or |
Yes |
Comparison operators
| Operator |
Supported |
$cmp |
Yes |
$eq |
Yes |
$gt |
Yes |
$gte |
Yes |
$lt |
Yes |
$lte |
Yes |
$ne |
Yes |
Conditional expression operators
| Operator |
Supported |
$cond |
Yes |
$ifNull |
Yes |
$switch |
Yes |
Date operators
| Operator |
Supported |
$dateAdd |
Yes |
$dateDiff |
Yes |
$dateFromParts |
Yes |
$dateFromString |
Yes |
$dateSubtract |
Yes |
$dateToParts |
Yes |
$dateToString |
Yes |
$dateTrunc |
Yes |
$dayOfMonth |
Yes |
$dayOfWeek |
Yes |
$dayOfYear |
Yes |
$hour |
Yes |
$isoDayOfWeek |
Yes |
$isoWeek |
Yes |
$isoWeekYear |
Yes |
$millisecond |
Yes |
$minute |
Yes |
$month |
Yes |
$second |
Yes |
$toDate |
Yes |
$week |
Yes |
$year |
Yes |
Miscellaneous operators
| Operator |
Supported |
$getField |
Yes |
$natural |
Yes (ascending) |
$toHashedIndexKey |
No |
Literal expression operators
| Operator |
Supported |
$literal |
Yes |
Object operators
| Operator |
Supported |
$mergeObjects |
Yes |
$objectToArray |
Yes |
$setField |
No |
Set operators
| Operator |
Supported |
$allElementsTrue |
Yes |
$anyElementTrue |
Yes |
$setDifference |
Yes |
$setEquals |
Yes |
$setIntersection |
Yes |
$setIsSubset |
Yes |
$setUnion |
Yes |
Stage operators
| Operator |
Supported |
$addFields |
Yes |
$bucket |
Yes |
$bucketAuto |
No |
$collStats |
No |
$count |
Yes |
$currentOp |
No |
$facet |
Yes |
$geoNear |
No |
$graphLookup |
No |
$group |
Yes |
$indexStats |
No |
$limit |
Yes |
$listLocalSessions |
No |
$listSessions |
No |
$lookup |
Yes
Doesn't support the let and pipeline fields.
|
$match |
Yes |
$out |
No |
$project |
Yes |
$redact |
No |
$replaceRoot |
Yes |
$sample |
No |
$set |
Yes |
$setWindowFields |
No |
$skip |
Yes |
$sort |
Yes |
$sortByCount |
Yes |
$unset |
Yes |
$unwind |
Yes |
String operators
| Operator |
Supported |
$concat |
Yes |
$dateFromString |
Yes |
$dateToString |
Yes |
$indexOfBytes |
Yes |
$indexOfCP |
Yes |
$ltrim |
Yes |
$rtrim |
Yes |
$split |
Yes |
$strcasecmp |
Yes |
$strLenBytes |
Yes |
$strLenCP |
Yes |
$substr |
Yes |
$substrBytes |
Yes |
$substrCP |
Yes |
$toLower |
Yes |
$toString |
Yes |
$toUpper |
Yes |
$trim |
Yes |
System variables
| Variable |
Supported |
$$CURRENT |
No |
$$DESCEND |
No |
$$KEEP |
No |
$$PRUNE |
No |
$$REMOVE |
Yes |
$$ROOT |
Yes |
Text operators
| Operator |
Supported |
$meta |
No |
Type operators
| Operator |
Supported |
$convert |
Yes |
$toBool |
Yes |
$toDate |
Yes |
$toDecimal |
Yes |
$toDouble |
Yes |
$toInt |
Yes |
$toLong |
Yes |
$toObjectId |
Yes |
$toString |
Yes |
$type |
Yes |
Variable operators
| Operator |
Supported |
$let |
Yes |
Geospatial
Cloud Firestore supports the following Geospatial operators.
Geometry specifiers
| Specifier |
Supported |
$box |
No |
$center |
No |
$centerSphere |
No |
$geometry |
No |
$maxDistance |
No |
$minDistance |
No |
$polygon |
No |
$uniqueDocs |
No |
Query selectors
| Selector |
Supported |
$geoIntersects |
No |
$geoWithin |
No |
$near |
No |
$nearSphere |
No |
$nearSphere |
No |
$uniqueDocs |
No |
Indexes and index properties
Cloud Firestore supports the following indexes and index operators.
Indexes
| Index type |
Supported |
| 2d |
No |
| 2dsphere |
No |
| Compound |
Yes |
| Hashed |
No |
| Multikey |
Yes |
| Single Field |
Yes |
| Text |
No |
Index properties
| Property |
Supported |
| Background |
Yes |
| Case Insensitive |
No |
| Partial |
No |
| Non-Sparse |
Yes |
| Sparse |
Yes |
| Text |
No |
| TTL |
No |
| Unique |
Yes |
Database commands
Cloud Firestore supports the following database commands.
Aggregation
| Command |
Supported |
aggregate |
Yes |
count |
Yes |
distinct |
Yes |
group |
No
The $group stage in aggregations is supported whereas the group command isn't.
|
mapReduce |
No |
Authentication
| Command |
Supported |
authenticate |
No |
getnonce |
No |
logout |
No |
Query and write operations
| Command |
Supported |
watch (Change Streams) |
No |
delete |
Yes |
eval |
No |
find |
Yes |
findAndModify |
Yes |
getLastError |
Yes |
getMore |
Yes |
getPrevError |
No |
GridFS |
No |
insert |
Yes |
parallelCollectionScan |
No |
replaceOne |
No
The replaceOne driver method is supported with the update command.
|
resetError |
No |
update |
Yes |
Session commands
| Command |
Supported |
abortTransaction |
Yes |
commitTransaction |
Yes |
endSessions |
Yes |
killAllSessions |
No |
killAllSessionsByPattern |
No |
killSessions |
No |
refreshSessions |
No |
startSession |
Sessions can be started using the startSession driver method. |
Administrative commands
Cloud Firestore supports the following administrative commands.
| Command |
Supported |
cloneCollectionAsCapped |
No |
collMod |
No |
collMod: expireAfterSeconds |
No |
convertToCapped |
No |
copydb |
No |
create |
Yes |
createIndex |
Yes To create indexes, see Manage indexes. |
createIndexes |
Yes To create indexes, see Manage indexes. |
createView |
No |
currentOp |
No |
drop |
No |
dropDatabase |
No To delete a database, see Delete a database. |
dropIndex |
Yes To delete indexes, see Manage indexes. |
dropIndexes |
No |
filemd5 |
No |
getAuditConfig |
No |
killCursors |
Yes |
killOp |
No |
listCollections |
Yes |
listDatabases |
Yes |
listIndexes |
Yes |
reIndex |
No |
renameCollection |
No |
setAuditConfig |
No |
Diagnostic commands
| Command |
Supported |
buildInfo |
Yes |
collStats |
No |
connectionStatus |
Yes |
connPoolStats |
No |
dataSize |
No |
dbHash |
No |
dbStats |
No |
explain |
Yes For behavior differences and limitations, see Query Explain |
features |
No |
hello |
Yes |
hostInfo |
Yes |
listCommands |
No |
profiler |
No |
serverStatus |
No |
top |
No |
whatsmyuri |
No |
Role management commands
To manage database access, Cloud Firestore supports
Identity and Access Management roles and permissions.
| Command |
Supported |
createRole |
No |
dropAllRolesFromDatabase |
No |
dropRole |
No |
grantRolesToRole |
No |
revokePrivilegesFromRole |
No |
revokeRolesFromRole |
No |
rolesInfo |
No |
updateRole |
No |
What's next