MongoDB——含糊查询的两种方法

打印 上一主题 下一主题

主题 1781|帖子 1781|积分 5343

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
方法一:类似于布局性数据库的like
db.users.find({fname: /zhangsan/});
对应mysql的like用法:select * from users where fname like '%zhangsan%';
(1)假如要含糊查询以什么开头,方法如下:
db.users.find({fname: /^zhangsan/});
(2)假如要含糊查询以什么末端,方法如下:
db.users.find({fname: /zhangsan^/});

方法二:正则表达式
常见的正则表达式
.点号:在正则表达式中是一个通配符,它代表全部字符和数字
*号:表示前面的匹配符出现>=0次;
+号:表示前面的匹配符出现>=1次;
?号:表示前面的匹配符出现<=1次;
{666}:表示前面的匹配符出现666次;
{666,888}:表示前面的匹配符出现666~888次;
^:匹配开头;
$:匹配末端;
(1)模子匹配user集合中name列包罗"zhangsan"的数据。
db.users.find({"name":{$regex:/zhangsan/}});
(2)查询某字段开头是"string"的记录,等同于sql的  like ‘string%’
db.mycollection.find({"content.value":{$regex:"^姚明"}})

(3)查询某字段末端是"string"的记录,等同于sql的 like ‘%string’
db.mycollection.find({"content.value":{$regex:"唱歌$"}})

(4)查询某字段末端是"string"的记录,等同于sql的 like ‘%string’
db.mycollection.find({"content.value":{$regex:"唱歌$"}})

(5)查询某字段不是"string"打头的记录,等同于sql的not  like ‘有限%’  and like '%公司' 
db.mycollection.find({"content.value":{$regex:"^[^有][^限]公司$"}})

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表