From RDBMSs to MongoDB
I agree with Markus W Mahlberg that this a very broad question and I am looking forward to read his blog. In my answer below I providing a few guidelines that should provide you with a good starting point when designing your data models.

As as a rule of thumb you should favour embedding, unless you need to regularly query the embedded objects on its own or if the embedded array is likely to get too large(>~100 records). Don't worry about the overhead of joins when splitting up a document into multiple collections as application-level joins are generally comparable in speed compared to a server-side join in a relational database provided your collections are properly indexed. 

When normalising you should also take in  consideration the write/read ratio of your data. A field that will mostly be read and only rarely updated is a good candidate for denormalisation. If you denormalise a field that is updated frequently then the extra work of finding and updating all the instances is likely to outweigh the savings that obtained from denormalising.

Looking at your particular case, you are probably better off splitting users and comments in separate collections unless you do not allow users to change their username. You could store the ObjectId of a user in the comments collection to link the two collections. You can then use an application-level join like the one below. In this example query the the 10 most recent comments for that particular user are returned:

 // Fetch the user documents identified by this user_name
&gt; user = db.users.findOne({user_name: "john doe"});// assumes unique index
   // Fetch all the comments that are linked to this user
&gt; comments = db.comments.find({_id: user._id  }).sort({CreatedAtUtc : -1}).limit(5000).toArray() ;