23 Relation filters
Filter nodes by what they are related to, without loading either side:
// Events at a venue
db.Query<IEvent>().WhereRelates(e => e.Venue, venueId).Execute();
// Events not hosted by an organizer
db.Query<IEvent>().WhereNotRelates(e => e.Host, organizerId).Execute();
// Events at any of these venues
db.Query<IEvent>().WhereRelatesAny(e => e.Venue, new[] { id1, id2, id3 }).Execute();
// A relation declared on a subtype: name the subtype (a hypothetical IConcert : IEvent)
db.Query<IEvent>().WhereRelates<IConcert, object>(c => c.Performers, performerId).Execute();Relation filters combine with any other filter:
var affordable = db.Query<IEvent>()
.WhereRelates(e => e.Venue, venueId)
.Where(e => e.Price <= 300m)
.OrderBy(e => e.StartsUtc)
.Execute();Or start the query from a relation property, which often reads most naturally:
var soldOut = db.Get<IVenue>(venueId).Events
.Query()
.Where(e => e.Status == EventStatus.SoldOut)
.OrderByDescending(e => e.StartsUtc)
.Take(5)
.Execute();