Complex Linq queries in RavenDB 4.0

time to read 2 min | 324 words

With RQL in RavenDB 4.0, we have a whole new set of capabilities during queries. In the RC1 release of RavenDB we had limited support for expressing the more complex queries in a strongly typed fashion using Linq. If you needed more complex queries, you had to drop to RQL strings. With the RC2 release, we bring you strongly typed and quite powerful queries using Linq. Let us see how this looks like for a very simple query:

image image

This isn’t really interesting, but it does show that we can do projections directly from the server side. Let us see something a bit more complex, shall we?

image image

This query is more interesting, because you can see that we are doing something that you previously had to create a transformer for. We are loading a related documents during the query and projecting a field from it back to the user.

In fact, you can even go crazy and define even more complex behavior in the query:

image image

In this case, we load two related documents and define a formatting function for names, which we can then apply on two documents.

This kind of code eliminates the need to have transformers entirely, and this makes me very happy.