You are currently browsing legacy 4.1 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 Perform Queries Lazily

In some situations, query execution must be delayed. To cover such a scenario, lazily and many other query extensions have been introduced.

Lazily

Lazy<List<T>> lazily();

Lazy<List<T>> lazily(Consumer<List<T>> onEval);

Parameters
onEval Consumer<List<TResult>> An action that will be performed on the query results.
Return Value
Lazy<List<TResult>> Lazy query initializer returning query results.

Example

Lazy<List<Employee>> employeesLazy = session
    .query(Employee.class)
    .whereEquals("FirstName", "Robert")
    .lazily();

List<Employee> employees = employeesLazy.getValue(); // query will be executed here

Counts

Lazy<Integer> countLazily();

Return Value
Lazy Lazy query initializer returning a count of matched documents.

Example

Lazy<Integer> countLazy = session
    .query(Employee.class)
    .whereEquals("FirstName", "Robert")
    .countLazily();

Integer count = countLazy.getValue(); // query will be executed here

Suggestions

Lazy<Map<String, SuggestionResult>> executeLazy();

Lazy<Map<String, SuggestionResult>> executeLazy(Consumer<Map<String, SuggestionResult>> onEval);

Return Value
Lazy<Map<String, SuggestionResult>> Lazy query initializer containing a map with suggestions for matching executed query

Example

Lazy<Map<String, SuggestionResult>> suggestLazy = session
    .query(Employee.class, Query.index("Employees_ByFullName"))
    .suggestUsing(builder -> builder.byField("FullName", "johne"))
    .executeLazy();

Map<String, SuggestionResult> suggest = suggestLazy.getValue(); // query will be executed here
List<String> suggestions = suggest.get("FullName").getSuggestions();

Facets

Lazy<Map<String, FacetResult>> executeLazy();

Lazy<Map<String, FacetResult>> executeLazy(Consumer<Map<String, FacetResult>> onEval);

Return Value
Lazy<Map<String, FacetResult>> Lazy query initializer containing a map with facet results matching executed query

Example

Lazy<Map<String, FacetResult>> facetsLazy = session
    .query(Camera.class, Query.index("Camera/Costs"))
    .aggregateUsing("facets/CameraFacets")
    .executeLazy();

Map<String, FacetResult> facets = facetsLazy.getValue(); // query will be executed here
FacetResult results = facets.get("manufacturer");