Let\'s say I am building a discussion forum using Node.js, and mongoose. A user can have multiple forums, and a forum can have multiple comments. A user can also invite othe
It depends mostly on how you're gonna query and update your data. Consistency and document size is also important in this case. Here's a good summary on when referencing or embedding documents:
Embedding:
Referencing:
This is an exctract from a book on mongo I read. These are just general rules but from my experience, using them makes it very clear wether to reference or embed most of the times.
I would rather reference Forum in this case. But please consider all your requirements. For example if you reference Forum from User and you need to query all User of a particular Forum the query might be slow in this case. If I were you I would compose a list of everything I need and then using general rules would find a balance between pros and cons of embeding and referencing.
Hope it helps!
Personally I like to do references in situations like yours. In this way I can get a comment from a user, a user from a forum, a forum from a comment, a forum from a user, etc. without worrying about doing complicated embedded document queries. I don't even bother storing embedded reference documents. If there is a one to many relationship between a forum and comments then I would store a forum reference on the comment and no comment reference on the forum because when you add/remove comments from the comments collection you then also have to go remove the embedded reference document from the comments collection on the forum.
I can query for a forum from a comment using the forum reference and I can get all comments for a forum by querying the comments collection for that forum reference (which is just an ID number until mongoose populates it behind the scenes for you).