Add Hint annotation.

This commit introduces the new `@Hint` annotation that allows to override MongoDB's default index selection for repository query, update and aggregate operations.

```
@Hint("lastname-idx")
List<Person> findByLastname(String lastname);

@Query(value = "{ 'firstname' : ?0 }", hint="firstname-idx")
List<Person> findByFirstname(String firstname);
```

Closes: #3230
Original pull request: #4339
This commit is contained in:
Christoph Strobl
2023-03-21 12:49:34 +01:00
committed by Mark Paluch
parent af2076d4a5
commit 7b44f78133
13 changed files with 276 additions and 3 deletions

View File

@@ -297,6 +297,25 @@ lower / upper bounds (`$gt` / `$gte` & `$lt` / `$lte`) according to `Range`
NOTE: If the property criterion compares a document, the order of the fields and exact equality in the document matters.
[[mongodb.repositories.queries.hint]]
=== Repository Index Hints
The `@Hint` annotation allows to override MongoDB's default index selection and forces the database to use the specified index instead.
.Example of index hints
====
[source,java]
----
@Hint("lastname-idx") <1>
List<Person> findByLastname(String lastname);
@Query(value = "{ 'firstname' : ?0 }", hint="firstname-idx") <2>
List<Person> findByFirstname(String firstname);
----
<1> Use the index with name `lastname-idx`.
<2> The `@Query` annotation defines the `hint` alias which is equivalent to explicitly adding the `@Hint` annotation.
====
[[mongodb.repositories.queries.update]]
=== Repository Update Methods