在QueryBuilder查询中忽略.and()

时间:2015-11-24 11:08:10

标签: 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();

我的问题是它只需要最后一个条件,所以我的查询看起来像这样:

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

我不知道自己做错了什么。我也尝试使用.and()代替put {(如https://stackoverflow.com/a/24025462/3811673

1 个答案:

答案 0 :(得分:1)

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

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);