【问题标题】:Advanced logical operations in MongoDB with Java Driver使用 Java 驱动程序在 MongoDB 中进行高级逻辑操作
【发布时间】:2015-04-27 13:55:06
【问题描述】:

我对 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 数组中。

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

【问题讨论】:

    标签: java mongodb operator-keyword


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 完美,我以前应该看过,我试图添加列表而不是查询。它给了我:{“$or”:[{“x1”:“y1”} , { "$and" : [ { "x2" : "y2"} , { "x3" : "y3"}]}]} 这就是我要找的!谢谢!
    • 不客气!如果您现在一切正常,请不要忘记验证此答案,以便将其标记为有效并关闭主题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2015-10-24
    • 2016-03-13
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多