600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mongodb 之 模糊查询

mongodb 之 模糊查询

时间:2021-10-17 07:17:03

相关推荐

mongodb 之 模糊查询

mongodb的模糊查询需要熟练掌握 正则匹配($regex),和全文检索($text),或者直接使用正则表达式。

一.mongodb中正则($regex)的用法:

1.{field:{$regex:{/pattern/option}}},其中pattern是寻常的正则表达式,

option的值包含:

i(不区分大小写),

m(当使用^与$符号模糊匹配时,作用于屏蔽中间的换行符) ,

x(忽略注释,以#开头 /n结尾),

s(允许所有字符包括换行符参与模糊匹配)

2.{field:{$regex:{'pattern',$options:<options>}}}

3.{field:{$regex:{/pattern/,$options:<options>}}}

注意点:

当需要的option的值需要多个的时候,一定要选择2或3的写法,多设置一个key

mongodb支持直接使用正则表达式进行匹配:

{field:/pattern/options},

目前正则匹配只有匹配前缀^是走索引的。

二.mongodb的全文搜索:

全文搜索是 mongodb的一个特性,上述的正则表达是在效率上等同在该字段上进行全部扫描(除了在该字段上建立索引并使用^符号进行查找,该操作是会走索引的),当需要正则搜索的文档到了一定的量级,模糊是查询的效率还是会很低的。

全文搜索就是在需要搜索的字段上加上一个文本索引,注意:一个集合只能支持建立一个全文索引,但该索引可以包含多个字段做联合索引。

该索引支持字段的值为string或者string类型的array,

全文索引是在该字段值的每个单词上建立索引,全文索引需要提供词库,目前中文的词库需要第三方支持,企业版需要付费去申请Linsence。

使用步骤:

1.建立文本索引,db.collection.createIndex({field:"text"})

2.db.collection.find({$text:{$search:"value"}})

3.$text: 配合的操作符为

$search 查找的文本,

$language 指定的语言,

$caseSensitive (禁用或启用大小写敏感的搜索,默认关闭),

$diacriticSensitive(禁用或启用发音符号敏感的搜索,默认关闭)

注意点:

1.不能使用$nor进行全文检索

2.$or中需要全文检索,$or中的条件必须都是索引

3.带有$text的query均不能进行hit()强制走索引

4.可以指定$natural 自然排序的顺序,如果该查询包括全文搜索

5. 不能随意与其它操作 做联合查询

6.不支持视图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。