aggregate(pipeline, options) {
    if (!_.isArray(pipeline)) return Promise.reject('pipeline must be an array');
    options = options || {};

    let stream = options.stream;
    delete options.stream;

    //always return as a cursor
    options.cursor = {};

    let cursor = this._dbCollection.aggregate(pipeline, options);

    if (options.skip) cursor.skip(Number(options.skip));
    cursor.limit(options.limit ? Number(options.limit) : DEFAULT_PAGE_SIZE);

    if (stream === true) {
      cursor.stream();
    }

    return new MongotronCursor(cursor);
  }
@param {Object} [pipeline] - mongo pipeline
@param {Object} [options] - mongo pipeline options