code: function getSampler(db, collectionName, opts, done) {
    db.admin().serverInfo(function(err, res) {
      if (err) return done(err);
      var supported = semver.gte(res.version, '3.1.6');
  
      debug('has native $sample?', supported);
      if (!supported) {
        return done(null, new ReservoirSampler(db, collectionName, opts));
      }
      return done(null, new NativeSampler(db, collectionName, opts));
    });
  }
docs: Test the MongoDB kernel version `db` is using and return
  a `stream.Readable` that will use the native `$sample` aggregation
  operator if available or fall back to a client-side reservoir sample.
  
  @param {mongodb.DB} db
  @param {String} collectionName to source from.
  @param {Object} opts
  @param {Function} done callback
  
  @option {Object} query to refine possible samples [default: `{}`].
  @option {Number} size of the sample to capture [default: `5`].
  @option {Boolean} raw BSON buffers to return [default: `false`].
  @option {Object} cursor specification when providing a raw option [default: `{}`].