title: Why aren't defaults, setters, validators and middleware not applied for findOneAndModify mongoose?
body: <p>While reading <a href="http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate" rel="nofollow">Mongoose's documentation</a>, I found the following note for <code>findOneAndModify</code>:</p>
  
  <blockquote>
    <p>Although values are cast to their appropriate types when using the
    findAndModify helpers, the following are not applied:</p>
  
  <pre><code>defaults
  setters
  validators
  middleware
  </code></pre>
  </blockquote>
  
  <p>The documentation goes on to explain that, in order to get these, one should follow the <code>traditional</code> approach, which uses <code>findOne</code> and <code>save</code>.</p>
  
  <p>My question: why aren't these functions applied? I understand that this can be simply a design decision of the Mongoose developers, but, looking at the code for <code>findOne</code> and <code>findOneAndUpdate</code>, I don't see much difference.</p>
  
  <p><strong>Note:</strong> This is not necessarily specific to <code>findOneAndUpdate</code>, but applies to other methods like <code>findOneAndRemove</code>.</p>