我想创建使用可选查询部分组成数据库查询的方法。
过去我可以编写如下方法:
import com.mongodb.DBObject;
import com.mongodb.QueryBuilder;
public DBObject createQuery(Optional<String> aOpt, Optional<Integer> bOpt) {
QueryBuilder builder = new QueryBuilder();
aOpt.ifPresent(a -> builder.and("a").is(a));
bOpt.ifPresent(b -> builder.and("b").lessThan(b));
return builder.get();
}
如何使用新的MongoDB Java驱动程序3.0来实现它
我试过像
这样的东西import org.bson.Document;
import com.mongodb.client.model.Filters;
public Document createQuery(Optional<String> aOpt, Optional<Integer> bOpt) {
Document query = new Document();
aOpt.ifPresent(a -> query.put("a", a));
bOpt.ifPresent(b -> query.[nonExistingMethod](Filters.lt("b", b)));
return query;
}
但是所有过滤器方法都返回BSON,它无法流畅地转换为Document
。似乎过滤器无法以这种方式使用......相当无用。
我是否想念一些东西。 如何明智地做到这一点?