使用Spring数据创建一个上限集合MongoDB @Document

pvp*_*ran 15 spring mongodb spring-data-mongodb spring-boot capped-collections

我正在使用MongoDB尝试spring-data中的反应支持.我使用的是spring-boot 2.0.0.

通常我会在我的项目中写一个这样的域对象:

@Document
public class PriceData {
    ......
}
Run Code Online (Sandbox Code Playgroud)

使用这个spring-data,它将在MongoDB中创建一个名为priceData的集合.如果我想自定义它,那么我会使用collection属性来做:

@Document(collection = "MyPriceData")
Run Code Online (Sandbox Code Playgroud)

由于我想尝试MongoDB的反应支持,我想创建一个上限集合,以便我可以使用@Tailable游标查询.

我可以在我的MongoDB数据库中创建一个封顶集合作为指定在这里:

CollectionOptions options = new CollectionOptions(null, 50, true);
mongoOperations.createCollection("myCollection", options);
Run Code Online (Sandbox Code Playgroud)

要么

db.runCommand({ convertToCapped: 'MyPriceData', size: 9128 })
Run Code Online (Sandbox Code Playgroud)

如果我使用一些外部MongoDB数据库,我可以运行此命令一次,这不是一个大问题.但是如果我使用嵌入式MongoDB,那么我会把它放在一个每次启动时都要执行的类中.

无论哪种方式,我都会在第一次请求之前创建一个集合.所以我想知道是否有办法,我可以指定spring-data-mongodb我需要一个上限集合而不是常规集合.不幸的是@Document在这种情况下无济于事.

Tar*_*ani 4

以下是奥利弗的

将这些选项暴露给 @Document 注释以便在构建映射上下文时自动处理它们可能是一个好主意,但我们通常得到人们的反馈,希望手动处理这些集合设置和索引操作,而不需要太多的自动行为。如果您希望看到支持,请随意打开 JIRA。

这已经是2011年的事了。迄今为止似乎仍然如此。如果您确实需要更改以使用注释来处理它,您应该打开 JIRA 票证