模糊查询简介
MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex *** 作符或直接使用正则表达式对象。
$regex *** 作符的介绍
MongoDB使用$regex *** 作符来设置匹配字符串的正则表达式,使用PCRE(Pert Compatible Regular Expression)作为正则表达式语言。
regex *** 作符
{<field>:{$regex:/pattern/,$options:’<options>’}}
{<field>:{$regex:’pattern’,$options:’<options>’}}
{<field>:{$regex:/pattern/<options>}}
正则表达式对象
{<field>: /pattern/<options>}$regex与正则表达式对象的区别:
在$in *** 作符中只能使用正则表达式对象,例如:{name:{$in:[/^joe/i,/^jack/}}
在使用隐式的$and *** 作符中,只能使用$regex,例如:{name:{$regex:/^jo/i, $nin:['john']}}
当option选项中包含X或S选项时,只能使用$regex,例如:{name:{$regex:/mline/,$options:"si"}}
$regex *** 作符的使用
$regex *** 作符中的option选项可以改变正则匹配的默认行为,它包括i, m, x以及S四个选项,其含义如下
i 忽略大小写,{<field>{$regex/pattern/i}},设置i选项后,模式中的字母会进行大小写不敏感匹配。
m 多行匹配模式,{<field>{$regex/pattern/,$options:'m'},m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。
x 忽略非转义的空白字符,{<field>:{$regex:/pattern/,$options:'m'},设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时井号(#)被解释为注释的开头注,只能显式位于option选项中。
s 单行匹配模式{<field>:{$regex:/pattern/,$options:'s'},设置s选项后,会改变模式中的点号()元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。
使用$regex *** 作符时,需要注意下面几个问题:
i,m,x,s可以组合使用,例如:{name:{$regex:/jk/,$options:"si"}}
在设置索弓}的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}
上面介绍的元字符可能就会让我们在查询的时候出现一些问题,比如有时候想要查询出所有带价格的模糊商品的时候用了元字符进行模糊搜索,这时候会查询出来全部的数据;
这个时候就需要对模糊查询的条件进行一些 *** 作,转义一下:
你需要有一个字段标示写入数据库的时间,然后查询的时候,设定查询时间段:
dbthingsfind({"createTime":{"$gt":"2014-10-29 0:0:0"}}) // 大于某个时间
dbthingsfind({"createTime":{"$lt":"2014-10-29 0:0:0"}}) // 小于某个时间
dbthingsfind({"$and":[{"createTime":{"$gt":"2014-10-29 0:0:0"}},{"createTime":{"$lt":"2014-10-29 0:0:0"}}]}) // 某个时间段
可以参考 >
1、启动Mongodb数据库。在自己电脑的E盘、D盘根目录模拟出两个Mongodb的数据库,分别代表旧库和新库。由于Mongodb的部署非常简单,数据文件分别在E:\mongodb\data\db(使用27017端口)和D:\mongodb\data\db(使用27117端口)下。具体如图。
2、连接新库查看其数据情况。通过Mongodb自带的客户端robomongo-100-rc1-windows-x86_64-496f5c2zip,解压后找到Robomongoexe,右击以管理员运行。左图所示界面,要求选择要连接的数据库。
3、连接旧库查看数据情况。同样通过客户端,连接旧库。如下图所示,旧数据库里面含有5条文档数据。下面我们就将旧库中的5条数据通过命令导出。
4、从旧库导出数据。分别导出fileschunks(保存有文档数据,二进制格式)和filesfiles(保存有文件信息),对于文档类数据两个需要分别导出。
5、导入数据到新库。同理,上一步导出的文件,要分别导入。
6、连接新库,查看数据情况。同样通过客户端,连接新库。如下图所示,我们发现5条文档数据已经导入进来。
以上就是关于Mongodb数据库的模糊搜索全部的内容,包括:Mongodb数据库的模糊搜索、mongodb数据库怎么查询出某一段时间内的数据、mogodb怎么用robomongo导出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)