title: use mongoose reserved field names
body: <p>I'm building an app that already has a lot of dependencies and use the word <code>collection</code> as a resource (document) and a property (key) that reference that resource. But for <s>mongodb</s> mongoose this is a reserved word, and I can't use it.</p>
  
  <p>I tried use the virtual feature, with no success:</p>
  
  <pre><code>var ProductModel = new mongoose.Schema({
      ...
      _collection: {type: mongoose.Schema.ObjectId}, // I can't put collection here
  }, { 
    toObject: {
      virtuals: true
    },
    toJSON: {
      virtuals: true 
    }
  });
  ProductModel.virtual('collection').get(function() { return this._collection; });
  ProductModel.virtual('collection').set(function() { return this._collection; });
  </code></pre>
  
  <p>Returning me an error </p>
  
  <pre><code> Cannot read property 'scope' of undefined
      at model.Object.defineProperty.set [as collection] (/path/my-app/node_modules/mongoose/lib/document.js:1231:58)
  </code></pre>
  
  <p>How can I make this work, maybe using middlewares in a simple way? That I could apply to any model?</p>