title: Get plain javascript object (or JSON-ready object) from mongoose document
body: <p>Given the created document from the <code>.save</code> method, or any other method that returns a document, how would I convert that document to a plain javascript object with primitive JSON types? I've tried <code>.toJSON</code> and <code>.toObject</code> but they both still maintain mongoose's ObjectId data type, when I want a string instead:</p>
  
  <pre class="lang-js prettyprint-override"><code>const mongoose = require('mongoose');
  mongoose.connect('mongodb://localhost:27017/test', {
      useNewUrlParser: true,
      useUnifiedTopology: true
  });
  
  const Cat = mongoose.model('Cat', { name: String });
  const kitty = new Cat({ name: 'aed' });
  
  kitty.save()
  .then(data =&gt; {
      console.log(data.toObject()._id instanceof mongoose.Types.ObjectId)
      console.log(data.toJSON()._id instanceof mongoose.Types.ObjectId)
      console.log(data.toObject({ virtuals: true, getters: true })._id instanceof mongoose.Type.ObjectId)
      console.log(data.toJSON({ virtuals: true, getters: true })._id instanceof mongoose.Types.ObjectId)
      return data
  })
  .then(data =&gt; data.remove())
  .catch(console.error);
  </code></pre>
  
  <pre><code>true
  true
  true
  true
  </code></pre>
  
  <p>I know I can use <code>.lean()</code>, but I specifically need to the document as well as its plain object version</p>
  
  <p>Thanks in advance</p>