2015-05-14 118 views
0

我需要一个Java驱动程序Mongo的查询和/或组合 - 为前 -蒙戈Java的查询和/或组合

假设我有一个收集用户有3场命名为A,B,C。

现在我不得不执行查找查询像 -

user.find({$and :[{"a":"text"},{$or :[{"b":"text"},{"c":"text"}]}]}) 

这蒙戈控制台查询得到正确的结果。 我如何将这个应用于JAVA mongo驱动程序。

请帮助 在此先感谢

+0

我不认为你需要的'$和'在这里,因为当你在你的查询条件的多个字段,他们自动地被$和'ed编辑。你需要'$和'的唯一情况是当你在*相同的字段中有多个条件(通常是不同的操作符)。 – Philipp

+0

另外,您是否使用新的QueryBuilder API或使用嵌套DBObject和DBList的旧API? – Philipp

+0

感谢您的回复Philipp,我正在使用旧的DBObject API。你能告诉我这个查询吗? – user2975671

回答

4

您可以使用下面的查询

DBCollection userCollection = db.getCollection("collection"); 

BasicDBObject orQuery = new BasicDBObject(); 
List<BasicDBObject> obj1 = new ArrayList<BasicDBObject>(); 
obj1.add(new BasicDBObject("a", "text")); 
obj1.add(new BasicDBObject("b", "text")); 
orQuery.put("$or", obj1); 

BasicDBObject andQuery = new BasicDBObject(); 
List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); 
obj.add(new BasicDBObject("c", "text")); 
obj.add(orQuery); 
andQuery.put("$and", obj); 

System.out.println(andQuery.toString()); 

DBCursor cursor = userCollection.find(andQuery); 
while (cursor.hasNext()) { 
    System.out.println(cursor.next()); 
}