MongoDB QueryBuilder

Sİmple MongoDB QueryBuilder

by XcsN

JavaScript

function QueryBuilder(){
   
    var query = { "$or" : []};
    
    var current = query.$or;
    var backs   = [query];
    
    var self = this;
    
    var baseWhere = function(field,value,operator){
        current.push({ [field] : { ["$"+operator] : value } });
        return self;
    };
    var baseWhereRegex = function(field,value){
        current.push({ [field] : { "$regex" : value, '$options': "gi" } });
        return self;
    };
    this.up = function(method, times){
    	  current = backs.pop();
        return self;
    };
    this.and = function() {
         current.push({ "$and": [] });
         backs.push(current);
         current = current[current.length - 1].$and;
         return self;
    };
    this.or = function() {
         current.push({ "$or": [] });
         backs.push(current);
         current = current[current.length - 1].$or;
         return self;
    };
    this.whereEq = function(field,value) {
        return baseWhere(field, value, 'eq');
    };
    this.whereNotEq = function(field,value) {
        return baseWhere(field, value, 'neq');
    };
    this.whereGt = function(field,value) {
        return baseWhere(field, value, 'gt');
    };
    this.whereLt = function(field,value) {
        return baseWhere(field, value, 'lt');
    };
    this.whereIn = function(field,value) {
        return baseWhere(field, value, 'in');
    };
    this.whereNotIn = function(field,value) {
        return baseWhere(field, {"$in" : value}, 'not');
    };
    this.whereContains = function(field,value) {
        return baseWhereRegex(field, value);
    };
    this.whereNotContains = function(field,value) {
        return baseWhereRegex(field, "^((?!" + value + ").)*$");
    };
    this.whereStartWith = function(field,value) {
        return baseWhereRegex(field, "^" + value);
    };
    this.whereNotStatWith = function(field,value) {
        return baseWhereRegex(field, "^((?!^" + value + ").)*$");
    };
    this.whereEndWith = function(field,value)...