使用Java驱动程序的MongoDB中的高级逻辑操作

时间:2015-04-27 13:55:07

标签: java mongodb operator-keyword

我对MongoDB有一点问题,我尝试使用Java驱动程序创建一个包含多个运算符的查询。我正在寻找这样的事情: x1:y1 OR(x2:y2 AND x3:y3)

目前我有这个:

 BasicDBObject andQuery = new BasicDBObject();

 List<BasicDBObject> obj2 = new ArrayList<BasicDBObject>();
 obj2.add(new BasicDBObject("x1", "y1"));
 andQuery.put("$or", obj2);

 List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
 obj.add(new BasicDBObject("x2", "y2"));
 obj.add(new BasicDBObject("x3", "y3"));
 andQuery.put("$and", obj);

当我打印时,这给了我这个:

 { "$or" : [ { "x1" : "x1"}] , "$and" : [ { "x2" : "x2"} , { "x3" : "y3"}]}

所以我认为问题来自第一个&#39;]&#39;它应该在最后,所以$和将在$或数组中。

但我怎样才能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

BasicDBObject orQuery = new BasicDBObject();

List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("x2", "y2"));
obj.add(new BasicDBObject("x3", "y3"));
andQuery.put("$and", obj);

List<BasicDBObject> obj2 = new ArrayList<BasicDBObject>();
obj2.add(new BasicDBObject("x1", "y1"));
obj2.add(andQuery);
orQuery.put("$or", obj2);