在 spring 引导中排序上限 mongodb 集合

sorting capped mongodb collection in spring boot

我正在尝试按降序对上限集合进行排序。

我尝试过的:

    @Tailable
    @Query(sort = "{$natural:-1}")
    Flux<Message> findAllByConversationId(String conversationId);

它给出:

Query failed with error code 2 and error message cannot use tailable option with a sort other than {$natural: 1}'

但是当我在 robo3t 中使用这个查询时:

db.getCollection('message').find({}).sort({$natural:-1})

它工作正常!

有帮助吗?

看来我需要使用“ReactiveMongoTemplate”进行本机查询

此代码如我所愿:

public Flux<StreamMessageDto> streamConversationById(String conversationId) {
    Criteria criteria = Criteria.where("conversationId").is(conversationId);
    Query query = Query.query(criteria);
    query.with(Sort.by(Sort.Direction.DESC, "$natural"));
    reactiveMongoTemplate.find(query, Message.class);
}

有关详细信息,请参阅 this link