Use filters to narrow down search results, or use them for database-like queries.
Filter` method can filter _numerical_ fields in several ways. Supported numerical types are int, double, float, long, and their nullable equivalents. Below is a list of use cases and examples illustrating the available methods.
To search for documents where a numerical field has a value, use the `
Exists` method. The following search finds blog posts that have an `
AuthorId` property; it is similar to the LINQ query `
Where(x => x.AuthorId.HasValue)`.
Like all filters, you can negate it with an exclamation point (!). To find all blog posts without an `
AuthorId`, use the following code.
## Exact match
For exact matching, use the `
Match` method. The following search matches blog posts with ID 42 but not those with ID 41 or 43. The LINQ equivalent is `
Where(x => x.Id == 42)`.
## Match by range
To find documents with a numeric field that has a value within a given range, use the `
InRange` method. The following search matches blog posts with zero to five comments; it matches blog posts with one, two, three, four, or five comments but not those with six or seven comments.
An equivalent in LINQ is `
Where(x => x.NumComments >= 0 && x.NumComments <= 5)`.
For some numerical types, such as int, there are also the `
GreaterThan` and `
LessThan` methods, which make range filtering easier. For instance, given that `
NumComments` cannot be negative, you can rewrite the previous search.
## Match by a set of values
In` method lets you filter on `
int` fields that match an explicit set of values. For instance, the following matches blog posts with one, three, or five comments.
## Filter on numerical collections
Use the `
In`, and `
Match` methods for properties that implement `
The following search, which uses `
Exists`, matches blog posts that have at least one category ID.
The following search matches any blog post that has a category with ID 42. It does not, however, limit the result to blog posts that only have that category ID.