- Reference >
- MongoDB Limits and Thresholds
MongoDB Limits and Thresholds¶
Synopsis¶
This document provides a collection of hard and soft limitations of the MongoDB system.
Limits¶
BSON Documents¶
-
BSON Document Size
¶ The maximum BSON document size is 16 megabytes.
The maximum document size helps ensure that a single document cannot use excessive amount of RAM or, during transmission, excessive amount of bandwidth. To store documents larger than the maximum size, MongoDB provides the GridFS API. See
mongofiles
and the documentation for your driver for more information about GridFS.
-
Nested Depth for BSON Documents
¶ Changed in version 2.2.
MongoDB supports no more than 100 levels of nesting for BSON documents.
Namespaces¶
-
Namespace Length
¶ Each namespace, including database and collection name, must be shorter than 123 bytes.
-
Number of Namespaces
¶ The limitation on the number of namespaces is the size of the namespace file divided by 628.
A 16 megabyte namespace file can support approximately 24,000 namespaces. Each index also counts as a namespace.
Indexes¶
-
Index Size
¶ The total size of an indexed value must be less than 1024 bytes. MongoDB will not add that value to an index if it is longer than 1024 bytes.
-
Number of Indexes per Collection
¶ A single collection can have no more than 64 indexes.
-
Index Name Length
¶ The names of indexes, including their namespace (i.e database and collection name) cannot be longer than 128 characters. The default index name is the concatenation of the field names and index directions.
You can explicitly specify an index name to the
ensureIndex()
helper if the default index name is too long.
-
Unique Indexes in Sharded Collections
¶ MongoDB does not support unique indexes across shards, except when the unique index contains the full shard key as a prefix of the index. In these situations MongoDB will enforce uniqueness across the full key, not a single field.
See
Enforce Unique Keys for Sharded Collections for an alternate approach.
-
Number of Indexed Fields in a Compound Index
¶ There can be no more than 31 fields in a compound index.
Capped Collections¶
-
Maximum Number of Documents in a Capped Collection
¶ Capped collections can hold no more than 232 documents.
Replica Sets¶
-
Number of Members of a Replica Set
¶ Replica sets can have no more than 12 members.
-
Number of Voting Members of a Replica Set
¶ Only 7 members of a replica set can have votes at any given time. See can vote Non-Voting Members for more information
Sharded Clusters¶
The
group
does not work with sharding. UsemapReduce
oraggregate
instead.db.eval()
is incompatible with sharded collections. You may usedb.eval()
with un-sharded collections in a shard cluster.$where
does not permit references to thedb
object from the$where
function. This is uncommon in un-sharded collections.The
$isolated
update modifier does not work in sharded environments.$snapshot
queries do not work in sharded environments.
-
Sharding Existing Collection Data Size
¶ MongoDB only allows sharding an existing collection that holds fewer than 256 gigabytes of data.
Note
This limitation only applies to sharding collections that have existing data sets, and is not a limit on the size of a sharded collection.
Operations¶
-
Sorted Documents
¶ MongoDB will only return sorted results on fields without an index if the sort operation uses less than 32 megabytes of memory.
-
2d Geospatial queries cannot use the $or operator
¶ See
$or
and 2d Geospatial Indexes.
-
Cannot Kill Foreground Index Build
¶ You cannot use
db.killOp()
to kill a foreground index build.
Naming Restrictions¶
-
Restrictions on Database Names
¶ The dot (i.e.
.
) character is not permissible in database names.Database names are case sensitive even if the underlying file system is case insensitive.
Changed in version 2.2: For MongoDB instances running on Windows.
In 2.2 the following characters are not permissible in database names:
See Restrictions on Database Names for Windows for more information on this change
-
Restriction on Collection Names
¶ New in version 2.2.
Collection names should begin with an underscore or a letter character, and cannot:
- contain the
$
. - be an empty string (e.g.
""
). - contain the null character.
- begin with the
system.
prefix. (Reserved for internal use.)
- contain the
-
Restrictions on Field Names
¶ Field names cannot contain dots (i.e.
.
), dollar signs (i.e.$
), or null characters. See Dollar Sign Operator Escaping for an alternate approach.