code: function QueryBuilder(database, params) {
    this.database = database;
  
    this._deletes = [];
    this._match = [];
    this._orderBy = [];
    this._returns = [];
    this._startAt = {};
    this._set = {};
    this._where = [];
    this._dontCount = false;
  
    if(params) this.params(params);
  }
docs: @class QueryBuilder
  
  Used to build queries with simple method calls.
  The query will be parsed automatically on submission.
  Also handles counting of overall matches (like MySQL SQL_CALC_FOUND_ROWS) as there were no limits.
  # Read Data
  @example
  var query = database.queryBuilder({limit: 10000});
  query.startAt({p: 'node:Simpsons("*: *")'});
  query.orderBy({field: 'p.age', dir: 'ASC'});
  query.returns('p');
  query.execute(function(err, results, total) {
  do something...
  });
  
  # Write Data
  @example
  var query = database.queryBuilder();
  query.startAt({p: 'node:Simpsons({search})'});
  query.set({'p.hairCount': 3});
  query.deletes('p.thirsty');
  query.returns('p');
  query.execute({search: 'name: Homer'}, function(err, results) {
  do something
  });