2013-07-10 60 views
5

我試圖使用MongoDB的API來創建此MongoDB的查詢編寫Java代碼:

{ "$or": [{"prd" : {"$in" : ["1234", "0987"]}} , {"rsin" : "3228742"}]} 

這裏是我與迄今使用的代碼:

QueryBuilder builder = new QueryBuilder(); 

if (builder == null) { 
    builder = QueryBuilder.start(); 
} 

if (mongoKey.equals("prd")){ 

    ArrayList<String> vals = new ArrayList<String>(); 

    for (int i=0; i < prdList; i++){ 
     vals.add(prdList.get(i)); 
    } 

    DBObject obj = new BasicDBObject (mongoKey, new BasicDBObject("$in", vals)); 
    builder.or(obj); 

}else { 
     builder.and(mongoKey).is(mongoValue); 
} 

這是目前打印出錯誤的語法:

{ "$or": [{"prd" : {"$in" : ["1234", "0987"]}}] , "rsin" : "3228742"} 

任何幫助嗎?

回答

3

問題在於else區塊,您需要使用or方法而不是and

... 
}else { 
    builder.or(new BasicDBObject(mongoKey, mongoValue)); 
} 

這將產生你想要的查詢。

+0

它的工作原理。謝謝。對於遲到的投票感到抱歉。 –