为什么 Mongo TTL 索引没有通过 Spring 数据创建

Why Mongo TTL index is not been creating via Spring Data

问题:mongodb ttl 索引未通过Spring 数据

创建

我有一个 spring-boot 应用程序和 MongoDB 作为数据库。

我有一个实体class:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(COLLECTION_NAME)
public class PersonEntity {

    public static final String COLLECTION_NAME = "person_info";
    private static final String PERSON_NAME = "person_name";


    @Id
    private PersonId id;

    @Field(name = PERSON_NAME)
    private String personName;

    
    @Indexed(name = "ttl_index", expireAfterSeconds=20)
    private LocalDateTime date;
}

并且我使用此存储库将新文档保存到 MongoDB:

public interface SellerRequestInfoRepository extends ReactiveMongoRepository<PersonEntityEntity, PersonId> {}

使用

personRepository.save(entity);

但是插入Person文档后MongoDB上没有创建TTL索引:

screenshot

请指教,我做错了什么

我引用 documentation:

Spring Data MongoDB can automatically create indexes for entity types annotated with @Document. Index creation must be explicitly enabled since version 3.0 to prevent undesired effects with collection lifecycle and performance impact.

您是否启用了自动创建索引?因为如果您不这样做,那很可能就是您未创建索引的原因。

使用 Spring 引导,您可以在 application.yml:

中使用以下配置启用自动索引创建
spring:
  data:
    mongodb:
      auto-index-creation: true

或者如果您更喜欢属性:

spring.data.mongodb.auto-index-creation=true