0

我正在使用以下查询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。(例如“错误”、“超时”、“响应时间”...)。

我如何通过两个or列表查询数据库。例如,我想匹配_id字段等于包含在中的字符串statistics以及name字段是包含在中的字符串的位置networks

通过阅读其他主题,我认为解决方案可能是,$elemMatch尽管我对高级查询在mongoDB.

4

1 回答 1

0

您可以组合使用 $and 和 $or

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" }
于 2013-06-27T08:45:58.003 回答