# Linq-To-MongoDB
Linq To MongoDB.
Installation
$ npm install linq-to-mongodb -saveOR$ 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 = ;var connectionString ="mongodb://172.26.9.15:27017/DB_NAME"var context = connectionString;context$Name="amit";context
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.
{ var linqToMongodb = ; var connectionString ="mongodb://172.26.9.15:27017/DB_NAME" var context = connectionString; context$userAge=age; context}
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.
{ var linqToMongodb = ; var connectionString ="mongodb://172.26.9.15:27017/DB_NAME" var context = connectionString; context;}
To Update the records.
{ var context = connectionString; context$id=user_id; var $this = this; var obj={}; obj'Designation'=userDesignation; obj'Project'=userProject context;}
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)=>{})