User-like MongoDB implementation
While I cannot comment on your Node.js code, I can tell you that we're doing something very similar on a project that uses Mongo to store every bit of information for around 200 social profiles. In our case, we're doing something like:

foreach ($videos as $video) {
    $payload = ['$set'  =&gt; $defaults + $meta + $this-&gt;interjectTimestamps((array)$video)];

    if (isset($video['statistics'])) {
        // Maintain a log of statistics for each video
        $payload['$push'] = ['statistics_log' =&gt; ['execute_at_ts' =&gt; $meta['execute_at_ts'], 'statistics' =&gt; $video['statistics']]];
    }
    $coll-&gt;update(['_type' =&gt; 'video', 'id' =&gt; $video['id']], $payload, ['upsert' =&gt; true]);
}


From my research, this is fine. Mongo's $push works great for logs like this, but be wary, it can be difficult to query data in array's like this. If you plan on doing a lot of querying against a user's app's, it may be better to store this information in a separate collection.

On the flip side, this design can be crucial if you ever need to perform any calculations with data from both your User document and the nested log. In our case, we're doing MapReduce on data from the entire document, log and all.