Regex 如何在MongoDb上查询不包含字符串的字段

Regex 如何在MongoDb上查询不包含字符串的字段,regex,mongodb,Regex,Mongodb,我想启动一个Mongo Db查询,它将在特定字段不包含字符串的情况下获取结果。例如 employeeName=“约翰·坎贝尔” 我希望employeeName的所有记录不应包含字符串“John”您应该能够编写如下查询: db.employees.find( { $not : { employeeName:/John/ } } ) 这利用了regex查询运算符-您应该能够编写如下查询: db.employees.find({"name": {$regex: /^((?!John).)*$/}})

我想启动一个Mongo Db查询,它将在特定字段不包含字符串的情况下获取结果。例如

employeeName=“约翰·坎贝尔”


我希望employeeName的所有记录不应包含字符串“John”

您应该能够编写如下查询:

db.employees.find( { $not : { employeeName:/John/ } } )

这利用了regex查询运算符-

您应该能够编写如下查询:

db.employees.find({"name": {$regex: /^((?!John).)*$/}})

“?!”是负前瞻性的

您可以直接在正则表达式中使用
$not

db.employees.find({“name”:{$not:/John/})
或者使用
$regex

db.employees.find({“name”:$not:{$regex:/John/})

它将包括所有包含Jhon word的结果,他实际上想要的是相反的。@聚合中的ALH
$not
不同,但它应该在
$match{}
中同时工作,这对我在mongodb 2.6.10/Ubuntu 16.04上不起作用,我得到了
错误:{$err:“无法规范化查询:BadValue$not cannot cannot cannot have a regex”,“code”:17287}
@icedwater根据文档,该版本不能有正则表达式。谢谢你的提示!我认为至少在评论中指出这一点是个好主意。值得一提的是,这使我的mongodb(Ubuntu 16.04上的2.6.10)崩溃了