2013-06-27 89 views
0

我正在使用下面的查詢searchQuery來應用正則表達式。兩個或運算符列表上的邏輯AND運算符

BasicDBObject searchQuery = new BasicDBObject(); 
Pattern regex; 
BasicDBList or = new BasicDBList(); 
for (String s : statistics) { 
    regex = Pattern.compile(s); 
    DBObject statRegex = new BasicDBObject("_id", regex); 
    or.add(statRegex); 
} 
searchQuery.put("$or", or); 

哪個結果發現其中_id字段,具有被稱爲statistics一個數組列表中的字符串中的一個的值。 (例如,「錯誤」,「超時」,RESPONSETIME」 ......)。

我怎麼可能通過兩個or清單查詢數據庫。例如,我想匹配,其中_id字段等於包含在statistics字符串並且其中name場被包含在networks的字符串。

從閱讀等話題,我認爲解決的辦法可能是與$elemMatch雖然我有多麼先進的查詢中mongoDB工作了解有限。

回答

0

您可以使用$和$或者組合

test:Mongo > db.test.insert({ _id : "abhi", name : "kumar" }) 
test:Mongo > db.test.find({ $and : [ {$or : [ { _id : /abhi/ } ]}, {$or : [ { name : /kumar/ } ] } ] }) 
{ "_id" : "abhi", "name" : "kumar" }