title: FindAndUpdate How to check if document was really updated
body: <p>Imagine the following model:</p>
  
  <pre><code>var Office = 
  {
      id: 1,
      name: "My Office",
      branches: 
      [
        {
          adddress: "Some street, that avenue",
          isPrincipal: true,
        },
        {
          adddress: "Another address",
          isPrincipal: false,
        },      
      ]
  }
  </code></pre>
  
  <p>I'd like to remove a branch, but we can't let the user remove the principal branch from an office. So here's my function:</p>
  
  <pre><code>remove: function(body)
  {
    return new Promise(function(resolve, reject)
    {
      return Office.findByIdAndUpdate(1, { $pull: {'branches': {_id: body.branch.id}}}, { new: true })
      .then(function(updatedOffice){
        resolve(updatedOffice)
      })
      .catch(function(error){
        reject(error);
      });
  
    })
  }    
  </code></pre>
  
  <p>I have some doubts here:</p>
  
  <ol>
  <li>As you can see I haven't included the another WHERE on the isPrincipal property, this is because I don't know how can I determine whether the office object got actually changed. Because the object will alway be retrieved but... How can I know this for sure?</li>
  <li>Is FindByIdAndUpdate the best approach considering we can't let a user delete the principal branch, and if he's trying to do so, we have to show a warning.</li>
  </ol>