【发布时间】:2018-09-27 07:06:02
【问题描述】:
我正在使用 MongoDB 3.6.3 和 Java 3.6.0 Mongo & Bson 驱动程序。
给定以下过滤器:
import static com.mongodb.client.model.Filter.and;
import static com.mongodb.client.model.Filter.eq;
import static com.mongodb.client.model.Filter.gt;
.
.
.
Bson filter = and(eq("field1", value),
gt("field2", value2));
我需要有条件地向过滤器添加另一个字段,从而有效地实现:
Bson filter = and(eq("field1", value),
gt("field2", value2),
eq("field3", optionalValue));
有没有办法通过将该字段附加到 filter 来做到这一点,还是我必须单独创建过滤器?例如。
Bson filter;
if (optionFieldRequired)
{
Bson filter = and(eq("field1", value),
gt("field2", value2));
}
else
{
Bson filter = and(eq("field1", value),
gt("field2", value2),
eq("field3", optionalValue));
}
【问题讨论】:
-
您可以使用 Arraylist。类似
List<Bson> fields = new ArrayList<>(); fields.add(eq("field1",value)); fields.add( gt("field2", value2)); if(optionFieldRequired) { fields.add(eq("field3", optionalValue)); } Bson filter = and(fields);
标签: java mongodb mongodb-java bson