Springboot2 + reactive + mongo => Tailable和Capped集合

时间:2018-05-04 13:28:44

标签: mongodb spring-boot spring-data-mongodb project-reactor

我尝试使用Springboot2进行一些测试,尤其是使用Reactor(Flux / Mono)。 我正面临着一个问题。

当我尝试使用存储库方法时,请检索我使用该方法的所有人:   @Tailable   Flux findWithTailableCursorBy();

但就我而言,我收到了这个错误

Caused by: com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'error processing query: ns=test.person batchSize=2Tree: $andSort: {}Proj: {} tailable cursor requested on non capped collection' on server localhost:27017

当我将我的收藏设置为“上限”时,它可以正常工作

db.runCommand( { convertToCapped: 'person', size: 8192 } )

但我出于多种原因不会使用上限集合

  • 无法删除文件(必须删除收藏)
  • Connot设置此属性programaticaly

我不知道如何解决这个问题,也许我的代码或选择错了。

有人可以解释一下如何使用我的数据库中只检索新元素吗?

此致

2 个答案:

答案 0 :(得分:1)

这是设计使然,而不是Spring Data限制。 MongoDB仅在上限集合上支持Tailable游标(请参阅mongodb reference documentation)。

如链接文档中所述,您可以选择轮询索引集合中的新元素(我不知道Spring Data中的任何反应式集成)。

答案 1 :(得分:0)

如果您正在使用 ReactiveMongoOperations,请不要忘记订阅这样的方法:mongoOperations.createCollection(ItemCapped.class, CollectionOptions.just(Collation.simple()).capped().size(50000).maxDocuments(20)).subscribe();

使用弹簧 2.4.5