spring-projects / spring-projects/spring-data-mongodb

IndexInfo::isIndexForFields returns false positives

Open
#5,187 2 comments 0 reactions 1 assignee View on GitHub

@christophstrobl is already working on this.

Since Apr 27, 2026.

type: bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.