两个OR运算符列表上的逻辑AND运算符

时间:2013-06-27 08:36:22

标签: java mongodb pattern-matching

我使用以下查询searchQuery来应用正则表达式。

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中高级查询的工作原理知之甚少。

1 个答案:

答案 0 :(得分: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" }