我正在尝试查找文件字符串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 ..."
}
答案 0 :(得分:2)
您可以使用$and运算符来实现您的目标:
db.GroovyScriptResult.findOne({
$and:[
{stackTrace:{$exists:true}},
{stackTrace:{$not:/PROVIDER_SOURCE/}},
{stackTrace:{$not:/providers/}}
]
})