2015-05-14 133 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()); 
}