无法在mongodb中组合多个非正则表达式条件

时间:2014-03-26 16:44:24

标签: mongodb

我正在尝试查找文件字符串stackTrace类型的字段,但既不包含“PROVIDER_SOURCE”也不包含“提供者”

计数似乎具有逻辑意义:

db.GroovyScriptResult.find({stackTrace:{$exists: true, $not: /PROVIDER_SOURCE/}}).count();
60
db.GroovyScriptResult.find({stackTrace:{$exists: true, $not: /PROVIDER_SOURCE/, $not: /providers/}}).count();
48

但是当我打印一个时,返回的文件确实包含一个包含“PROVIDER_SOURCE”的stackTrace。我做错了什么?

db.GroovyScriptResult.findOne({stackTrace:{$exists: true, $not: /PROVIDER_SOURCE/, $not: /providers/}});
{
    "_id" : ObjectId("532313c8aa3c937c43ca40cb"),
    "stackTrace" : "Exception: could not execute query; SQL [/* criteria query */ select... this_.PROVIDER_SOURCE ..."
}

1 个答案:

答案 0 :(得分:2)

您可以使用$and运算符来实现您的目标:

db.GroovyScriptResult.findOne({
    $and:[
       {stackTrace:{$exists:true}}, 
       {stackTrace:{$not:/PROVIDER_SOURCE/}}, 
       {stackTrace:{$not:/providers/}}
    ]
})