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