我使用以下查询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
中高级查询的工作原理知之甚少。
答案 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" }