0.0.2 • Published 8 years ago

linq-to-mongodb v0.0.2

Weekly downloads
8
License
-
Repository
-
Last release
8 years ago

Linq-To-MongoDB

Linq To MongoDB.

Installation

$ npm install linq-to-mongodb -save
OR
$ npm install linq-to-mongodb -g

Features

  • This framework allows you to write the Linq queries on MongoDB documents.
  • It supports delayed execution, means query will get fired when any operation(e.g. ToArray,ForEach,First,Take,Skip etc) is performed on the linq query.
  • It converts the Linq/Sql query to MongoDB query, which helps to improve the code readability.

Example

Please check the below examples.

var linqToMongodb = require('linq-to-mongodb');
var connectionString ="mongodb://172.26.9.15:27017/DB_NAME"
var context = new linqToMongodb.DataContext(connectionString);
context.$.Name="amit";
context.GetTable("Users").Where(_user=>_user.UserName==Name).ToArray(users=>{
	//Here you will get all the users which has user name equals to 'amit'
})

Pass the name of documents to GetTable method of context. In above case name of document is "Users" ( Note : it is case sensitive). Please note the line number 4. if you forgot to add the line 4 i.e 'context.$.Name="amit";' then it wouldn't work. Here is hack every time when your using the variable in linq query we have to add the property to "context.$" object. Take a look at another example.

function getUsers(age){
	var linqToMongodb = require('linq-to-mongodb');
	var connectionString ="mongodb://172.26.9.15:27017/DB_NAME"
	var context = new linqToMongodb.DataContext(connectionString);
	context.$.userAge=age;
	context.GetTable("Users").Where(_user=>_user.Age>userAge).ToArray(users=>{
		// Here you will get all the users which has age greater than 
		// the value of the parameter passed to function i.e value of age
	})
}

If you can see I have created the new property "userAge"( Note: this property name can be anything) to the object "context.$" and assigned the value of parameter i.e "age" to the "userAge". Then I have used the same parameter name ("userAge") in the where clause "...Where(_user=>_user.Age>userAge)".

To Insert the records.

function addUser(_user){
	var linqToMongodb = require('linq-to-mongodb');
	var connectionString ="mongodb://172.26.9.15:27017/DB_NAME"
	var context = new linqToMongodb.DataContext(connectionString);
	context.GetTable("Users").Insert(_user,(result)=>{
		//result will provide the value of "_id" which is autogenerated.
	});
}

To Update the records.

function UpdateUser(user,callback){
	var context = new linqToMongodb.DataContext(connectionString);
	context.$.id=user._id;
	var $this = this;
	var obj={};
	obj['Designation']=user.Designation;
	obj['Project']=user.Project
	
	context.GetTable("Users").Where(a=>a._id==id).Update({ $set : obj },function(_obj){ 
		callback(_obj)
	});
}

Below are the supported Linq Queries.

  • Select e.g. context.GetTable("Users").Select(new {UserName:1,UserAge:1})
  • Where e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge)
  • Count e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Count(cnt=>{ });
  • Skip e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Skip(10)
  • Take e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Take(10)
  • Min e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Min(user=>user.userAge);
  • Max e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Max(user=>user.userAge);
  • Sum e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Sum(user=>user.userAge);
  • Avg e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).Avg(user=>user.userAge);
  • OrderBy e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).OrderBy(user=>user.userAge);
  • OrderByDescending e.g. context.GetTable("Users").Where(_user=>_user.Age>userAge).OrderByDescending(user=>user.userAge);
  • GroupBy e.g. context.GetTable("Users").GroupBy(new {userAge:1})
  • Distinct e.g. context.GetTable("Users").Distinct(_user=>_user.Age>userAge)
  • First e.g. context.GetTable("Users").First(_user=>_user.Age>userAge,(user)=>{})
  • Last e.g. context.GetTable("Users").Last(_user=>_user.Age>userAge,(user)=>{})
0.0.2

8 years ago

0.0.1

8 years ago