2012-10-08 25 views
0

我使用以下格式的Java Mongo Collection。如何在JAVA中使用AND&OR條件mongo db數組collection

{ 
"field1": ["f1","f2"], 
"field2": ["g1","g2"],   
    "Ans": a1 
} 
{ 
    "field1": ["f4","f5"], 
    "field2": ["g5","g6"],   
     "Ans": a2 
} 
{ 
    "field1": ["f1","f6"], 
    "field2": ["g2","g3"],   
     "Ans": a3 
} 

我需要做的「OR」條件字段1,並分別
從結果我需要做的條件來選擇行字段2。
例如:f1,f5,g2,g3是我得到的輸入。
我需要在現場1與F1做或condtion,F5,所以我會得到所有的三排
我需要在現場2相剋做或condtion,G3,所以我會得到第1和第3行
,而這樣做我只需要獲得第一和第三排的條件。
Follwing是使用

 DBObject query1 = new BasicDBObject("field1","f1"); 
     DBObject query2 = new BasicDBObject("field1","f5"); 
     BasicDBList condtionalOperator = new BasicDBList(); 
     condtionalOperator.add(query1); 
     condtionalOperator.add(query2); 
     DBObject query = new BasicDBObject("$or", condtionalOperator);  

其結果
相似或查詢字段2和查詢我知道它很長的代碼IM。任何人都知道簡單的代碼比這個嗎?

回答

0

(我使用的是蒙戈外殼JavaScript語法響應,因爲這是一個有點比Java更簡潔。相應的Java應該很容易產生。)

db.collection.find({$and:[ 
    {field1:{$in:["f1","f5"]}}, 
    {field2:{$in:["g1","g3"]}} 
]}); 

$in運營商基本上沒有或操作,所以$and的第一個操作數基本上相當於{$or:[{field1:"f1"},{field1:"f5"}]}