title: Mongoose: populate() / DBref or data duplication?
body: <p><strong>I have two collections:</strong></p>
  
  <ol>
  <li>Users</li>
  <li>Uploads</li>
  </ol>
  
  <p><br>
  Each upload has a <code>User</code> associated with it and I need to know their details when an <code>Upload</code> is viewed. Is it best practice to duplicate this data inside the the Uploads record, or use <a href="http://mongoosejs.com/docs/populate.html">populate()</a> to pull in these details from the Users collection referenced by <code>_id</code>?</p>
  
  <p><br>
  <strong>OPTION 1</strong></p>
  
  <pre><code>var UploadSchema = new Schema({
      _id: { type: Schema.ObjectId },
      _user: { type: Schema.ObjectId, ref: 'users'},
      title: { type: String },
  });
  </code></pre>
  
  <p><br>
  <strong>OPTION 2</strong></p>
  
  <pre><code>var UploadSchema = new Schema({
      _id: { type: Schema.ObjectId },
      user: { 
             name: { type: String },
             email: { type: String },
             avatar: { type: String },
             //...etc
            },
      title: { type: String },
  });
  </code></pre>
  
  <p><br>
  With 'Option 2' if any of the data in the <code>Users</code> collection changes I will have to update this across all associated <code>Upload</code> records. With 'Option 1' on the other hand I can just chill out and let <code>populate()</code> ensure the latest User data is always shown.</p>
  
  <p><strong>Is the overhead of using <code>populate()</code> significant? What is the best practice in this common scenario?</strong></p>