title: findAndModify or findOneAndUpdate - "is not a function"
body: <p>First of all, which one is best?
  <code>findAndModify</code> or <code>findOneAndUpdate</code> or <code>findByIdAndUpdate</code>?</p>
  
  <p>In my case I got a table like this:</p>
  
  <p><strong>seqkeys</strong></p>
  
  <pre><code>{ 
      "_id" : "invoice", 
      "seq" : NumberInt(1)
  },
  { 
      "_id" : "receipt", 
      "seq" : NumberInt(1)
  }
  </code></pre>
  
  <p>And I want to find the seq number for invoice, add 1 and save. <em>(and then use that number to save the real invoice record in the invoice table)</em></p>
  
  <p>But I cant get this to work, I constantly get </p>
  
  <pre><code>TypeError: seqkeysTable.findAndModify is not a function
  </code></pre>
  
  <p>So here is my model:</p>
  
  <pre><code>var mongoose      = require('mongoose');
  var Schema        = mongoose.Schema;
  var seqkeysSchema = new Schema({
      _id:                String,     // Table Name
      seq:                Number      // Sequence Number
  });
  module.exports = mongoose.model('seqkeysModel', seqkeysSchema,'seqkeys');
  </code></pre>
  
  <p>And here is my <code>findkey</code> nodejs function....</p>
  
  <pre><code>var seqkeysModel = require('../../models/seqkeysModel');
  var seqkeysTable = mongoose.model('seqkeysModel');
  var findKey = function(tableName) {
      return new Promise((resolve, reject) =&gt; {
      seqkeysTable.findAndModify(
          { "_id": tableName },
          { $inc: {"seq":1} },
          { new: true }
      ,function (err, data) {
          if (err) {
              reject(new Error('findKey ERROR : ' + err));
              return;
          } else {
              resolve(data.seq);
          };
      });
  })};    
  </code></pre>