【问题标题】:Creating a capped collection using Spring data MongoDB @Document使用 Spring 数据 MongoDB @Document 创建上限集合
【发布时间】:2018-07-03 07:01:22
【问题描述】:

我正在尝试使用 MongoDB 在 spring-data 中提供响应式支持。我正在使用 spring-boot 2.0.0。

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

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

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

@Document(collection = "MyPriceData")

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

我可以在我的 MongoDB 数据库中创建一个上限集合,指定为 here

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

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

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

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

【问题讨论】:

  • 不支持使用文档注释创建封顶集合,除非您期望得到支持文档注释封顶选项的答案。你能展示一下你是如何使用嵌入式 mongo 的吗?是通过 de.flapdoodle.embed 与 spring boot 的依赖关系吗?只是想了解您的期望。
  • @Veeram 我通过 fladdoodle 依赖项使用嵌入式 mongo。我的期望是,可能在 spring-data-mongodb 的未来版本中,@Document 中有一个选项可以指定类似capped=true

标签: spring mongodb spring-boot spring-data-mongodb capped-collections


【解决方案1】:

所以下面是来自Oliver

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

这又回到了2011。迄今为止,它似乎仍然是正确的。如果你真的需要使用注解来处理它,你应该打开一个 JIRA 票

【讨论】:

  • 感谢您的反馈。
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多