QueryBuilder doesn't support $and, so you'll need to use an explicit
BasicDBObject and BasicDBList to do this. Something like:
BasicDBList andClauses = new BasicDBList();
andClauses.add(
QueryBuilder.start().or(
QueryBuilder.start("foo").is("a").get(),
QueryBuilder.start("foo").is("b").get()).get()
);
andClauses.add(
QueryBuilder.start().or(
QueryBuilder.start("bar").is("c").get(),
QueryBuilder.start("bar").is("d").get()).get()
);
BasicDBObject query = new BasicDBObject();
query.put("$and", andClauses);
should do the trick.
- Dan