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)...