Java Spring MongoDB @TextIndexed 注释未在现有数据库中创建索引

标签 java spring mongodb annotations

我在 MongoDB 中有集合,我正在尝试使用 Spring 注释 (@TextIndexed) 生成文本索引。我不会在应用程序启动时创建数据库,它已经创建了。

问题是 - 索引没有添加到我的数据库中。

注释是否仅在启动应用程序后创建数据库时才起作用?

谢谢。

Spring v.4.3.2 MongoDB v.4.0.1

最佳答案

注释是否仅在启动应用程序后创建数据库时才起作用”?

答案是肯定的。

如果集合已经创建,Spring data 不会初始化索引。 我必须做一些像你想做的事情,我发现的唯一解决方案是使用 MongoOperations 实例来完成它。

  @Autowired
  private MongoOperations mongoOps;

  @PostConstruct
  public void initializeIndexesInDb(){
    mongoOps.indexOps(YourDocumentClass.class).ensureIndex(new Index().on("fieldName", Direction.ASC));
  }

关于Java Spring MongoDB @TextIndexed 注释未在现有数据库中创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146327/

相关文章:

java - 阅读发送到电话号码的短信

mongodb - mongodb更新更改对象字段的顺序

java - 如果没有足够的文档,MongoDB的cursor.limit()会超时

java - 突出显示网格中的单元格 - java swing

java - 为 Java jUnit 测试创建一个 MultipartFormDataInput 对象

java - Java中ConcurrentMap的意义

mongodb - 如何使用 $lookup 和 $in mongodb 聚合

java - 服务器多线程一次仅应答一个客户端

spring - 迁移到 Spring 4.2.4 后出现 AccessControlException

java - 如何确认 ClassPathXmlApplicationContext 找到文件?