2013-06-27 91 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" }