我想使用Java Driver 3.2在MongoDB 3.2中执行查询,其中同时包含$and
和$or
子句。
对于reference,我尝试了以下方法:
List<Document> criteria1 = new ArrayList<>();
List<Document> criteria2 = new ArrayList<>();
criteria1.add(new Document("fetchStatus", new Document("$gte", FetchStatus.PROCESSED_NLP.getID())));
criteria1.add(new Document("fetchStatus", new Document("$lte", fetchStatusParam)));
criteria1.add(new Document("episodeID", new Document("$in", episodeIDs)));
criteria2.add(new Document("fetchStatus", new Document("$eq", PROCESSED_FETCH.getID())));
criteria2.add(new Document("isFullTextRet", new Document("$eq", false)));
BasicDBList or = new BasicDBList();
or.add(criteria1);
or.add(criteria2);
DBObject query = new BasicDBObject("$or", or);
ArrayList<Document> results = dbC_Coll.find(query).into(new ArrayList<>());
在criteria1
和criteria2
应与$or
连接的情况下,在criteria1
子句中,应应用$and
。
问题是在MongoDB Java驱动程序3.2中没有这样的方法,我得到了Cannot resolve method find(com.mongodb.DBObject)
错误。
如何在MongoDB Java驱动程序3.2中编写诸如(A && B) || (X && Y)
之类的查询?
1条答案
按热度按时间o7jaxewo1#
就我个人而言,我发现构造对象序列要容易得多,就像U使用JSON结构来增强可读性一样。但无论您看到
{}
还是[]
,它仍然只是Document()
:这基本上与以下内容相同:
此外,也不需要“显式”
$eq
运算符,因为“equals”实际上是查询属性中赋值的默认含义。