您的位置:首页 > 数据库 > Mongodb

SpringBoot配置MongoDB去掉_class字段

2017-12-03 21:58 483 查看
When using spring data mongo it by default adds a _class key to your collection to be able to handle inheritance.

But if your domain model is simple and flat, you can remove it by overriding the default MappingMongoConverter

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.*;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

/**
* @description:
* When using spring data mongo it by default adds a _class key to your collection to be able to handle inheritance.
* But if your domain model is simple and flat, you can remove it by overriding the default MappingMongoConverter
* @author:@luomouren.
* @Date:2017-12-03 21:26
*/
@Configuration
public class MongoConfig {

@Bean
public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
try {
mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
} catch (NoSuchBeanDefinitionException ignore) {
}

// Don't save _class to mongo
mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));

return mappingConverter;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb SpringBoot class