我尝试使用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 } )
但我出于多种原因不会使用上限集合
我不知道如何解决这个问题,也许我的代码或选择错了。
有人可以解释一下如何使用我的数据库中只检索新元素吗?
此致
答案 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