Use filters to narrow down search results, or use them for database-like queries.
The `Filter
` method can be used to filter _numerical_ fields in a number of ways. Supported numerical types are int, double, float and long as well as their nullable equivalents. Below is a list of use cases and examples illustrating the available methods.
## Existence
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 instead 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 that have between zero and five comments; it matches blog posts that have one, two, three, four, or five comments but not those that have 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
The `In
` method allows filtering on `int
` fields that match an explicit set of values. For instance, the following matches blog posts that have one, three, or five comments.
## Filter on numerical collections
Use the `Exists
`, `In
`, and `Match
` methods for properties that implement `IEnumerable<int>
`. (Support for other numerical types is currently lacking but will be available in future versions.)
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.