Spring Data - MongoDB indexing DBRef
dbref, indexing, mongodb, spring-data-mongodb
Solution
You can create the index with the mongo shell, but if you want to do it through code and since you are using spring-data-mongodb, use this:
`mongoTemplate.indexOps(B.class).ensureIndex(new Index().on("a", Order.ASCENDING));`
You can also specify the name of the collection if the name of your class doesn't match it:
mongoTemplate.indexOps("b").ensureIndex(new Index().on("a", Order.ASCENDING));
Problem
I'm using spring-data-mongodb-1.2.0.RELEASE. I have two classes A and B where B has a reference to A and it is annotated with @DBRef. Class A: ``` @Document(collection = "a") public class A { @Id public String id; /** The TicketGrantingTicket this is associated with. */ @Field public String name; public A(String id, String name) { this.id = id; this.name = name; } } ``` Class B: ``` @Document(collection = "b") public class B { @Id public String id; @Field public String name; @DBRef @Indexed public A a; public B(String id, String name, A a) { super(); this.id = id; this.name = name; this.a = a; } } ``` Since I'm quering for all instances of B that are refering to a certain A: ``` B fromDB = mongoOperations.findOne(Query.query(Criteria.where("a.$id").is(a1.id)), B.class); ``` I need it to be indexed. After the first insertion of a B instance into MongoDB an index should be created. As can be seen below it doesn't: Does anyone know how can I create such an index ? In addition it looks like the DBRef filed (as can be seen by the mongo shell) does not match to the format as it is defined at MongoDB documentation. Am I missing something here?