diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java index 4feef22e2..c1012080a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultIndexOperations.java @@ -127,7 +127,8 @@ public class DefaultIndexOperations implements IndexOperations { indexOptions = addPartialFilterIfPresent(indexOptions, indexDefinition.getIndexOptions(), entity); indexOptions = addDefaultCollationIfRequired(indexOptions, entity); - return collection.createIndex(indexDefinition.getIndexKeys(), indexOptions); + Document mappedKeys = mapper.getMappedObject(indexDefinition.getIndexKeys(), entity); + return collection.createIndex(mappedKeys, indexOptions); }); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java index 01f696dad..fe5527293 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultIndexOperationsUnitTests.java @@ -69,6 +69,14 @@ public class DefaultIndexOperationsUnitTests { this.template = new MongoTemplate(factory, converter); } + @Test // DATAMONGO-1183 + public void indexOperationsMapFieldNameCorrectly() { + + indexOpsFor(Jedi.class).ensureIndex(new Index("name", Direction.DESC)); + + verify(collection).createIndex(eq(new Document("firstname", -1)), any()); + } + @Test // DATAMONGO-1854 public void ensureIndexDoesNotSetCollectionIfNoDefaultDefined() {