1

オプションのクエリパーツを使用して db クエリを作成するメソッドを作成したいと考えています。

昔は次のようなメソッドを書くことができました:

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 driver 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;
}

Documentしかし、すべてのフィルター メソッドは、流暢に変換できなかった BSON を返します。フィルターはそのように使用できなかったようです...かなり役に立ちません。

私は何かが恋しいですか。それを賢く行う方法は?

4

0 に答える 0