Service Limitations¶
Overview¶
MongoDB Realm has several guidelines to keep in mind when architecting how your tools and clients interact with MongoDB through Realm. Keep this guidance in mind when deciding how to structure queries, selecting which CRUD and aggregation operations to use, and determining how to handle concurrent workloads.
MongoDB Version Requirements¶
You can access most of the CRUD and Aggregation functionality of MongoDB version 3.6 with the MongoDB service; however, MongoDB Realm does not support all operations and features available in standard tools and clients. For a list of specific MongoDB operations that are available when you connect to MongoDB through Realm, see the CRUD & Aggregation API reference.
Realm Sync requires MongoDB Atlas clusters to run MongoDB 4.4.0 or greater.
Query Results¶
MongoDB queries executed through Realm can return a maximum of 50,000 documents. If you need to return more documents, consider paginating your query.
Query Options¶
Realm supports all query options in system functions. Realm does not support certain options for CRUD operations run from user functions. For a list of specific options that are available when you connect to MongoDB through Realm, see Query Options.
Aggregation¶
Realm supports all aggregation pipeline
stages in
system functions except for $currentOp
and $indexStats
.
In user functions, supported aggregation pipeline stages are reduced for security reasons.
For a list of pipeline stages that are available and their allowed function context, see Aggregation.
Database Commands¶
Realm does not support any database commands in the Client SDKs or Functions. You can, however, call a limited subset of database commands when when connected to a MongoDB cluster over the Realm wire protocol. For a list of wire protocol supported commands, see Database Commands.
Change Streams¶
Realm limits the total number of change streams open against a given cluster across all Realm apps based on the cluster's size. It also limits the number of client applications that can concurrently listen for changes using Watch and Mobile Sync. The following table lists the limitations for each cluster size:
Cluster Size | Maximum Number of Change Streams | Maximum Number of Concurrent Listening Clients |
---|---|---|
Free Tier ( M0 ) | 5 | 250 |
Shared Clusters ( M2 /M5 ) | 10 | 500 |
Small, Dedicated Clusters ( M10 /M20 ) | 100 | 1000 |
Standard Clusters ( M30 /M40 ) | 1000 | 10000 |
Standard Clusters ( M50 - M90 ) | 1000 | 50000 |
High-Power Clusters ( M100+ ) | 1000 | 100000 (Contact Support for Additional Usage) |
Realm opens a single change stream on each collection that is associated with a Database Trigger, Collection Sync, or Watch operation.
To minimize the number of concurrent listening clients and open change streams:
- Start Watch and Sync operations only when necessary. Close any open Watch and Sync streams immediately when they're no longer necessary.
- Avoid data models that require you to Watch or Sync an unbounded number of collections.
Atlas Support¶
MongoDB Realm does not currently support sharded MongoDB Atlas clusters.
When data is bulk/batch loaded into MongoDB Atlas, you may see a delay in data appearing on devices while MongoDB Realm processes changes.
Concurrent Workloads with Sync¶
- Writing:
- MongoDB Realm supports up to 30 users concurrently writing data to an underlying MongoDB document. With more than 30 concurrent writers, you may see delays in syncing or conflict resolution.
- Reading:
- Frontend clients reading from a global realm can scale past tens of thousands of concurrent users.
When you intend to have many concurrent writers, have each writer work on a separate document.
Rules¶
Realm Sync supports Sync rules. Realm Sync does not support roles/field-level rules at this time.
Static Hosting¶
Realm enforces a 25MB maximum file size constraint on static hosting.