Java .and()在QueryBuilder查询中被忽略

Java .and()在QueryBuilder查询中被忽略,java,mongodb,Java,Mongodb,我正在使用QueryBuilder类将我的查询放在一起 QueryBuilder queryBuilder = new QueryBuilder(); Pattern regex = Pattern.compile("^((?!Salt).)*$"); queryBuilder.put("contract").notEquals("none").and("contract").notEquals(null).and("contract").regex(regex).get(); 我的问题是它只

我正在使用QueryBuilder类将我的查询放在一起

QueryBuilder queryBuilder = new QueryBuilder();
Pattern regex = Pattern.compile("^((?!Salt).)*$");
queryBuilder.put("contract").notEquals("none").and("contract").notEquals(null).and("contract").regex(regex).get();
我的问题是它只接受最后一个and条件,因此我的查询如下所示:

{ "contract" : { "$regex" : "^((?!Salt).)*$"}}

我不知道我做错了什么。我还尝试了使用.and()而不是中的put()。

您也可以尝试将每个表达式包装在一个操作中,例如

BasicDBObject document = new BasicDBObject();
Pattern regex = Pattern.compile("^((?!Salt).)*$");
QueryBuilder queryBuilder = new QueryBuilder();
queryBuilder.and(
    new QueryBuilder().put("contract").notEquals("none").get(),
    new QueryBuilder().put("contract").notEquals(null).get(),
    new QueryBuilder().put("contract").regex(regex).get()
);
document.putAll(queryBuilder.get());
DBCursor cursor = getDbCollection().find(document);