MongoDB 中的高级逻辑操作与 Java 驱动程序
Advanced logical operations in MongoDB with Java Driver
我在使用 MongoDB 时遇到了一些小问题,我正在尝试使用 Java 驱动程序创建一个包含多个运算符的查询。我正在寻找这样的东西:
x1 : y1 或 (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"}]}
所以我认为问题出在第一个']',它应该在末尾,所以$and 将在$or 数组中。
但是我怎样才能做到这一点呢?谢谢!
试试这个:
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);
我在使用 MongoDB 时遇到了一些小问题,我正在尝试使用 Java 驱动程序创建一个包含多个运算符的查询。我正在寻找这样的东西: x1 : y1 或 (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"}]}
所以我认为问题出在第一个']',它应该在末尾,所以$and 将在$or 数组中。
但是我怎样才能做到这一点呢?谢谢!
试试这个:
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);