我正在使用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。
答案 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);