title: Mongoose query: remove "_id" attribute, keep virtual attribute "id" in results
body: <p>I am running an Express.js app, and I have the following setup:</p>
  
  <p><strong>models.js</strong></p>
  
  <pre><code>var schemaOptions = {
      toJSON: {
        virtuals: true
      },
      toObject: {
          virtuals: true
      }
  };
  
  var modelSchema = new mongoose.Schema({
      name     : { type: String, required: true }
  
  }, schemaOptions);
  
  modelSchema.virtual('id').get(function() { return this._id; });
  </code></pre>
  
  <p><strong>controllers.js</strong></p>
  
  <pre><code>exports.getModel = function(req, res) {
      Model.find().select('name').exec(function(err,model) {
          if (err) {
              return res.status(500).json({errors:err, message: 'Internal server error'});
          }
          return res.status(200).json({model: model});
      });
  };
  </code></pre>
  
  <p>The result of the above query would be something like:</p>
  
  <pre><code>{ "_id":"dakjdjkakda", "name":"MontyPython", "id":"dakjdjkakda" } 
  </code></pre>
  
  <p>because of the Virtual attribute I defined in the modelSchema.</p>
  
  <p>If I change the query select statement to:</p>
  
  <pre><code>Model.find().select('-_id name').exec(function(err,model) {}
  </code></pre>
  
  <p>The result would be:</p>
  
  <pre><code>{"name":"MontyPython", "id":null }
  </code></pre>
  
  <p>I believe this happens because the Virtual attribute points to the _id attribute. </p>
  
  <p>My question is, how can remove the _id attribute in the query, but keep the id alias I created?</p>