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.不支持视图
mongodb 之 模糊查询相关推荐
- mongodb cond 模糊查询_NoSQL注入之MongoDB
01 背景 NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.NoSQL(不仅仅是 SQL)是数据存储的一个流 ...
- mongodb cond 模糊查询_为了实现在线库的复杂查询,你还在双写吗?
一.在线库不支持在线复杂查询 做在线业务的开发者经常会碰到这样的难题:在线数据库上面运行稍微复杂点的查询,在线业务就挂了!不管是单机数据库如MySQL.PG,还是分布式数据库,HBase.MongoD ...
- mongodb模糊查询 php7_详解php7如何实现MongoDB模糊查询
php7如何实现MongoDB模糊查询?MongoDB模糊查询语句相信对大家来说都不陌生,本文主要给大家介绍了在php 7中MongoDB实现模糊查询的方法,文中给出了详细的介绍和示例代码,对大家具有 ...
- 关于解决MYSQL的like模糊查询效率的一种方案
大家都知道like %suibin% 这种查询的效率极低,而MYSQL也建议不要这样模糊查询,常用的是把数据同步到CACHE里: 1.比如同步到ES里用ES模糊查询.或者同步数据到MongoDB实现模 ...
- mongodb模糊查询包含特殊字符
mongodb中的待特殊字符的模糊查询需要转义下才能查到 (name: /wo*2hjf/ 查不到 name: /wo\*2hjf/ 查得到 ) let str=wo*2hjf; let fil ...
- python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...
- mongotemplate模糊查_java 中 mongodb的各种操作 模糊查询 精确查询 等等
本意是想查查mongo数据库的int类型的like怎么查,但是好像没 解决这个问题. 精确查询:模糊查询:分页查询,每页多少:按某个字段排序(或升或降):查询数量:大于,小于,等于:且,或,某个字段不 ...
- java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法
Java操作MongoDB插入数据进行模糊查询与in查询功能 由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法 具体如下: 存放mongodb: /** * 公共方法:设置Obj ...
- MongoDB模糊查询-查询某月的数据
mongodb 模糊查询 应用场景: 做报表统计查询2019年02月的数据 db.getCollection('WT_SpareManage').find({"useDate":{ ...
最新文章
- python画图-python画图的两种方法
- PHP——获取上传文件的后缀名
- HDU 5473 There was a kingdom 凸包 DP
- Dataset之Fashion-MNIST:Fashion-MNIST数据集简介、下载、使用方法之详细攻略
- 【数据竞赛】从0梳理1场时间序列赛事!
- ajax 中文乱码问题 主要是IE浏览器
- button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例
- Java序列化接口Serializable接口的作用总结
- 信息学奥赛一本通C++语言——1032:大象喝水
- Java、JavaScript和JScript
- K8S学习笔记之MiniKube的搭建(VM虚拟机环境)
- 计算机开机界面用户如何删除,怎么删除电脑登陆账户_怎么删除电脑开机账户...
- 计算机网络中速率、带宽、吞吐量的区别
- 【IPC】关于码流类型的理解
- 计算机术语写祝福语,祝福语精选
- 从 sketch 中获取颜色、字体组件内容
- Linux内核PPP
- mdb转换为mysql_MS Access * .MDB转换为MySQL或SQLite,数据编码问题
- IDEA添加项目为library
- 【git】./git下路径某pack文件cannot be mapped:Resource temporarily unavailable