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

本文介绍了如何在MongoDB中使用方法一的类似SQLLIKE查询以及方法二的正则表达式进行模糊查询,包括查询字段以、尾、特定字符开始或结束的情况,以及否定匹配的例子。

方法一:类似于结构性数据库的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:"^[^有][^限]公司$"}})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技颠覆未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值