【发布时间】:2016-08-13 16:33:23
【问题描述】:
我想在 MongoDB 3.2 中使用 Java Driver 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 Driver 3.2 中没有这样的方法,我得到了 Cannot resolve method find(com.mongodb.DBObject) 错误。
我的问题:
如何在 MongoDB Java Driver 3.2 中编写 (A && B) || (X && Y) 之类的查询?
【问题讨论】:
标签: java mongodb mongodb-query mongo-java-driver