java - 使用 Java 驱动程序在 MongoDB 中进行高级逻辑运算

标签 java mongodb operator-keyword

我在使用 MongoDB 时遇到了一些问题,我正在尝试使用 Java 驱动程序创建一个包含多个运算符的查询。我正在寻找这样的东西: x1:y1 或(x2:y2 和 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);

关于java - 使用 Java 驱动程序在 MongoDB 中进行高级逻辑运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29897782/

相关文章:

java - jTextArea 使用 BufferedReader 仅保存文本文件中的第一行文本?

java - 通过不同的字符串键比较 Hashmap

c++ - 没有正确使用运算符 '?'?

java - Spring 批处理最终失败

java - 如何根据指数概率创建带有案例的 switch 语句?

node.js - 如何将变量传递给routes.index

C++ ifstream 和 ofstream 重载运算符从文件读取

C#逻辑运算题

node.js - 使用 mongoose 根据其属性之一返回子文档

linux - Errr 'mongo.js:L112 Error: couldn' t 连接到服务器 127.0.0.1 :27017 at src/mongo/shell/mongo. js:L112'