spring-projects / spring-projects/spring-data-mongodb
IndexInfo::isIndexForFields returns false positives
@christophstrobl is already working on this.
Since Apr 27, 2026.
- Dominant language
- Java
- Stars
- 1.7k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
The javadoc for org.springframework.data.mongodb.core.index.IndexInfo::isIndexForFields states
Returns whether the index is covering exactly the fields given independently of the order
However the implementation is incorrect as it does the following
return this.indexFields.stream().map(IndexField::getKey).collect(Collectors.toSet()).containsAll(keys);
If this method is called with one attribute and a compound index exists that contains this attribute and some others, it returns true.
One effect of this can be that indexes required for an efficient lookup on the given attribute are not created as part of a migration process - an index where that is the third attribute could be matched and it is not useful for the purpose.
The code could be fixed by also comparing the sizes of the collections.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.