为什么 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
问题: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