Use filters to narrow down search results, or use them for database-like queries.Â
Use the Filter method to filter `DateTime
` and nullable `DateTime
`Â fields in a number of ways. The following list shows use cases and examples illustrating the available methods.
Note
If you cache the search results using the [built in caching functionality](🔗), you probably do not want to use `
DateTime.Now
` in your filters, because the cache key will differ for each search. In those cases, instead, normalize the `DateTime
` value to the closest minute or, at the very least, second.
## Existence
To search for documents where a `DateTime
` field has a value, use the Exists method. The following search finds blog posts with a `PublishDate
` property with a value. The following code is similar to the LINQ query `Where(x => x.PublishDate.HasValue)
`.
To negate it with an exclamation point (!) to find all blog posts with no publish date, use the code below.
## Exact match
For exact matching, use the `Match
` method. The following search matches blog posts published exactly at 2010-01-01 00:00. It does not match those published 2009-12-31, 2010-01-01 01:00 or 2010-01-02. The LINQ equivalent is `Where(x => x.PublishDate == new DateTime(2010, 1, 1))
`.
## Match by range
To find documents with a `DateTime
` field whose value is within a given range, use the `InRange
` method. The following search matches blog posts that were published between 2010-01-01 00:00 and 2010-01-02 00:00. An equivalent in LINQ is `Where(x => x.PublishDate >= new DateTime(2010, 1, 1) && x.PublishDate <= new DateTime(2010, 1, 2))
`.
For convenience, the .NET API also features the `GreaterThan
`, `LessThan
`, `Before
`, and `After
` methods that make range filtering easier for `DateTime
` fields.