linq-to-mongodb
v0.0.2
Published
linq to mongodb
Downloads
9
Readme
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)=>{})