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



我正在尝试使用MongoDB在spring-data中进行反应式支持。我正在使用弹簧引导 2.0.0。

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

@Document
public class PriceData {
......
}

有了这个 spring-data,它将在 MongoDB 中创建一个名为 priceData 的集合。如果我想自定义它,那么我会使用collection属性来执行此操作:

@Document(collection = "MyPriceData")

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

我可以在我的MongoDB数据库中创建一个上限集合,如下所示:

CollectionOptions options = new CollectionOptions(null, 50, true);
mongoOperations.createCollection("myCollection", options);

db.runCommand({ convertToCapped: 'MyPriceData', size: 9128 })

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

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

所以下面是来自奥利弗

在构建映射上下文时,将这些选项公开给@Document注释以自动处理它们可能是个好主意,但我们通常会得到人们的反馈,他们希望手动处理这些集合设置和索引操作,而无需太多的 automagic 行为。随意打开 JIRA 以防您希望看到它仍然受到支持。

这是在2011年。到目前为止,它似乎仍然适用。如果您确实需要使用注释进行更改来处理它,则应打开 JIRA 票证

最新更新