To create an index for a collection (as documented here https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/) one can use something like the following:
mongoTemplate.indexOps(Person.class).ensureIndex(new Index().on("name",Order.ASCENDING));
But where in the program should I place this code snippet?
In the relevant repository's constructor? I've did it like that now and it works, but I somehow feel like it is bad design.
Somewhere in Mongo configuration? I haven't found a suitable method to override for that here https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/config/AbstractMongoConfiguration.html
MongoDB provides a method called createIndex() that allows user to create an index. The key determines the field on the basis of which you want to create an index and 1 (or -1) determines the order in which these indexes will be arranged(ascending or descending).
Single indexing in MongoDB is straightforward. To start, select a database that already contains collections. Once you choose a database, use the createIndex() command in the shell to create a single index.
MongoDB automatically determines whether to create a multikey index if the indexed field contains an array value; you do not need to explicitly specify the multikey type.
Creating an Index in MongoDB is done by using the “createIndex” method.
If you need to do it in programmatic way, you can just create new Spring's @Configuration and perform such initialization:
@Configuration @DependsOn("mongoTemplate") public class CollectionsConfig { @Autowired private MongoTemplate mongoTemplate; @PostConstruct public void initIndexes() { mongoTemplate.indexOps("collectionName") // collection name string or .class .ensureIndex( new Index().on("name", Sort.Direction.ASC) ); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With