14

我正在尝试使用 MongoDB 在 spring-data 中提供响应式支持。我正在使用 spring-boot 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,在这种情况下没有帮助。

4

1 回答 1

4

所以下面是来自奥利弗

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

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

于 2018-02-05T16:27:23.887 回答