MongoDB structure: single collection vs multiple smaller collections

I would recommend NOT to make separate collection per user.

Read the documentation

By default MongoDB has a limit of approximately 24,000 namespaces per
database. Each namespace is 628 bytes, the .ns file is 16MB by
default.

Each collection counts as a namespace, as does each index. Thus if
every collection had one index, we can create up to 12,000
collections. The –nssize parameter allows you to increase this limit
(see below).

Be aware that there is a certain minimum overhead per collection — a
few KB. Further, any index will require at least 8KB of data space as
the b-tree page size is 8KB. Certain operations can get slow if there
are a lot of collections and the meta data gets paged out.

So you won’t be able to gracefully handle it if your users exceed the namespace limit. Also it won’t be high on performance with the growth of your userbase.

UPDATE

As @Henry Liu mentioned in the comments. For Mongodb 3.0 or above using WiredTiger storage engine, it will no longer be the limit.

docs.mongodb.org/manual/reference/limits/#namespaces

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)