MongoDb 自动创建索引
spring-data-mongodb 3.0后默认不会自动创建索引
有三种方式可以解决:
首先对应的实体类上面需要有Document注解
1、修改配置(推荐,简单)
properties:
spring.data.mongodb.auto-index-creation=true
yaml:
-
spring:
-
data:
-
mognodb:
-
auto-index-creation: true
2、继承AbstractMongoClientConfiguration
修改代码中your_开头的属性,改为自己的mongodb连接配置
-
-
import com.mongodb.MongoClientSettings;
-
import com.mongodb.MongoCredential;
-
import com.mongodb.ServerAddress;
-
import com.mongodb.client.MongoClient;
-
import com.mongodb.client.MongoClients;
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
-
-
import java.util.Arrays;
-
-
public class MongoDBDataSourceConfig extends AbstractMongoClientConfiguration {
-
-
public MongoClient mongoClient() {
-
MongoClient mongoClient = MongoClients.create(
-
MongoClientSettings.builder()
-
.applyToClusterSettings(builder ->builder.hosts(Arrays.asList(new ServerAddress(your_host, your_port))))
-
// 凭据
-
.credential(MongoCredential.createCredential(your_username, your_dbname,your_password.toCharArray()))
-
.build());
-
return mongoClient;
-
}
-
-
protected String getDatabaseName() {
-
return your_dbname;
-
}
-
-
protected boolean autoIndexCreation() {
-
return true;
-
}
-
}
3、手动获取索引执行
-
import lombok.RequiredArgsConstructor;
-
import lombok.extern.slf4j.Slf4j;
-
import org.springframework.boot.context.event.ApplicationReadyEvent;
-
import org.springframework.context.annotation.Configuration;
-
import org.springframework.context.event.EventListener;
-
import org.springframework.data.mapping.context.MappingContext;
-
import org.springframework.data.mongodb.core.MongoTemplate;
-
import org.springframework.data.mongodb.core.convert.MongoConverter;
-
import org.springframework.data.mongodb.core.index.IndexOperations;
-
import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexResolver;
-
import org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity;
-
import org.springframework.data.mongodb.core.mapping.Document;
-
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
-
-
-
-
-
-
public class MongoConfiguration {
-
private final MongoTemplate mongoTemplate;
-
private final MongoConverter mongoConverter;
-
-
public void initIndicesAfterStartup() {
-
LOGGER.info("Mongo InitIndicesAfterStartup init");
-
long init = System.currentTimeMillis();
-
MappingContext mappingContext = this.mongoConverter.getMappingContext();
-
if (mappingContext instanceof MongoMappingContext) {
-
MongoMappingContext mongoMappingContext = (MongoMappingContext) mappingContext;
-
for (BasicMongoPersistentEntity<?> persistentEntity : mongoMappingContext.getPersistentEntities()) {
-
Class clazz = persistentEntity.getType();
-
if (clazz.isAnnotationPresent(Document.class)) {
-
MongoPersistentEntityIndexResolver resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext);
-
IndexOperations indexOps = mongoTemplate.indexOps(clazz);
-
resolver.resolveIndexFor(clazz).forEach(indexOps::ensureIndex);
-
}
-
}
-
}
-
LOGGER.info("Mongo InitIndicesAfterStartup take: {}", (System.currentTimeMillis() - init));
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgkeaci
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13