title: Mongoose findOneAndUpdate and runValidators not working
body: <p>I am having issues trying to get the 'runValidators' option to work. My user schema has an email field that has required set to true but each time a new user gets added to the database (using the 'upsert' option) and the email field is empty it does not complain:</p>
  
  <pre><code> var userSchema = new mongoose.Schema({
     facebookId: {type: Number, required: true},
     activated: {type: Boolean, required: true, default: false},
     email: {type: String, required: true}
  });
  </code></pre>
  
  <p><code>findOneAndUpdate</code> code:</p>
  
  <pre><code>model.user.user.findOneAndUpdate(
        {facebookId: request.params.facebookId},
        {
            $setOnInsert: {
                facebookId: request.params.facebookId,
                email: request.payload.email,
            }
        },
        {upsert: true, 
         new: true, 
         runValidators: true, 
         setDefaultsOnInsert: true
        }, function (err, user) {
            if (err) {
                console.log(err);
                return reply(boom.badRequest(authError));
            }
            return reply(user);
        });
  </code></pre>
  
  <p>I have no idea what I am doing wrong, I just followed the docs: <a href="http://mongoosejs.com/docs/validation.html">http://mongoosejs.com/docs/validation.html</a></p>
  
  <p>In the docs is says the following:</p>
  
  <blockquote>
    <p>Note that in mongoose 4.x, update validators only run on $set and $unset operations. For instance, the below update will succeed, regardless of the value of number.</p>
  </blockquote>
  
  <p>I replaced the $setOnInsert with $set but had the same result.</p>