作用: 正则表达式是使用指定字符串来描述、匹配一系列符合某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串 *** 作。MongoDB 使用 $regex *** 作符来设置匹配字符串的正则表达式。
语法一
{ <fIEld>: { $regex: /pattern/,$options: 'options>' } }{ >: { $regex: 'pattern',1)">>: { $regex: /pattern/> } }
语法二
{ >: /pattern/> }
2.案例演示
假设MongoDB中存放了我们OrderService服务的消息信息,其数据如下:
(以下为演示所用到的9个文档)
{ "_ID" : ObjectID("5d305b1c4857fc49c0c14c81"),"order" : "QQ00001","data" : "\"<?xml version='1.0' enCoding='UTF-8'?>Response service=\\"OrderService\\"><head>ERR</head><ERROR>重复下单</ERROR></Response>\""},{ "_ID" : ObjectID("5d305b3b4857fc49c0c14c82"),"data" : "\"<?xml version='1.0' enCoding='UTF-8'?><=\\"OrderService\\"><head>OK</head><Body><OrderResponse filter_mmm=\\"2\\" destcity=\\"shenzheng\\" origincode=\\"QQ0003\\" /></Body></Response\""},{ "_ID" : ObjectID("5d305bd14857fc49c0c14c88"),1)">=\\\"zhongshan\\\" =\\"QQ0002\\" =\\"QQ0001\\" \""}
需求: 查询 data 字段 含有 字符 <head>OK</head>的文档
执行代码如下:
db.dbtestregex.find({data:{ $regex:/<head>OK<\/head>/}})
查询代码中的 \ 为转移符,以下查询语句也是如此。
返回结果如下:
{ "_ID" : ObjectID("5d305bb74857fc49c0c14c87"),"order" : "QQ00003","data" : "\"<?xml version='1.0' enCoding='UTF-8'?><Response service=\\\"OrderService\\\"><head>OK</head><Body><OrderResponse filter_mmm=\\\"2\\\" destcity=\\\"shenzheng\\\" origincode=\\\"QQ0003\\\" /></Body></Response>\""},{ "_ID" : ObjectID("5d305bd14857fc49c0c14c88"}
上面的查询命令也可以改写成:
db.dbtestregex.find({data:/<head>OK<\/head>/})
其查询结果是一样的,如下:
{ "_ID" : ObjectID("5d305bb74857fc49c0c14c87"),1)">\""}
还可以写成:
db.dbtestregex.find({data:{ $regex:'head>OK<\/head>'}})
其实现功能一样。
3.类关系型数据库中的 not like 功能实现反向查询虽然不常见,但也是我们DBA必须的。下面我们做一个案例演示,看看在MongoDB中,怎么实现not like 功能的查询。
需求 查询data 字段中不含 <head>OK</head>的文档
执行脚本如下:
db.dbtestregex.find({data:{ $not: /<head>OK<\/head>/ }})
返回的文档如下;
{ "_ID" : ObjectID("5d305b1c4857fc49c0c14c81"}
更多内容可参照官方文档 https://docs.mongodb.com/manual/reference/operator/query/regex/#op._S_regex
总结以上是内存溢出为你收集整理的MongoDB的模糊查询 *** 作(类关系型数据库的 like 和 not like)全部内容,希望文章能够帮你解决MongoDB的模糊查询 *** 作(类关系型数据库的 like 和 not like)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)