You are currently browsing legacy 3.0 version of documentation. Click here to switch to the newest 4.2 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Session: Querying: How to query?

Database can be queried using LINQ-enabled Query method with few custom extension that will be described later.

Syntax

IRavenQueryable<T> Query<T>(); // perform query on a dynamic index

IRavenQueryable<T> Query<T>(string indexName, bool isMapReduce = false);

IRavenQueryable<T> Query<T, TIndexCreator>()
	where TIndexCreator : AbstractIndexCreationTask, new();

Parameters
indexName string Name of an index to perform query on
isMapReduce bool Indicates if queried index is a map/reduce index (modifies how we treat identifier properties).
Return Value
IRavenQueryable Instance implementing IRavenQueryable interface containing additional query methods and extensions.

Safe By Default

The default value of a page size for a query is 128 results. In order to retrieve a different number of results in a single query use .Take(pageSize) method.

Example I - Basic

// load up to 128 entities from 'Employees' collection
List<Employee> employees = session
	.Query<Employee>()
	.ToList();

Notice that by specifying Employee as a type parameter, we are not only defining a result type, but also marking name of collection that will be queried.

Example II - Syntax

Queries can be performed using both LINQ syntaxes.

// load up to 128 entities from 'Employees' collection
// where FirstName equals 'Robert'
List<Employee> employees = session
	.Query<Employee>()
	.Where(x => x.FirstName == "Robert")
	.ToList();

// load up to 128 entities from 'Employees' collection
// where FirstName equals 'Robert'
IRavenQueryable<Employee> employees = from employee in session.Query<Employee>()
			 where employee.FirstName == "Robert"
			 select employee;

Example III - Querying specified index

// load up to 128 entities from 'Employees' collection
// where FirstName equals 'Robert'
// using 'My/Custom/Index'
IRavenQueryable<Employee> employees = from employee in session.Query<Employee>("My/Custom/Index")
			 where employee.FirstName == "Robert"
			 select employee;

or

// load up to 128 entities from 'Employees' collection
// where FirstName equals 'Robert'
// using 'My/Custom/Index'
IRavenQueryable<Employee> employees = from employee in session.Query<Employee, MyCustomIndex>()
			 where employee.FirstName == "Robert"
			 select employee;

Custom methods and extensions

Available custom methods and extensions: