我想创建使用可选查询部分组成数据库查询的方法。
在过去,我可以编写如下方法:
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
流畅地转换。似乎不能那样使用过滤器......非常没用。
我想念什么吗。如何明智地做到这一点?