我在Spring Data Mongodb中使用QueryDSL谓词 . 但是,我面临的情况是我必须使用MongoTemplate查询API(例如过滤从Mongo获取的字段) . 这是一个简单的例子:

public Stream<MyModel> findSummary(Predicate predicate){
    Query query = new Query();
    query.fields.include("field1").include("field2");
    return mongoTemplate.stream(query, MyModel.class);
}

我想将我的谓词转换为标准,以便我可以做类似的事情:

Query query = new Query();
query.addCriteria(XXXXX.toCriteria(predicate));

但是我找不到这样的实用类 .

我发现可以访问QueryDSL谓词,因此我开始实现自定义访问者(com.mysema.query.types.Visitor),但Criteria API并不是为此目的而设计的:例如实现简单的“和”运算符QueryDSL(com.mysema.query.types.Ops#AND)必须变成类似的东西

<result of left argument visit assumed to be a Criteria>.and("<path of right argument>").<operator of right argument>(<result of right argument visit>);

有人可以提出一种方法来使QueryDSL Predicates和Spring Data Mongodb Query互操作吗?

谢谢

伯努瓦