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 之 模糊查询相关推荐

  1. mongodb cond 模糊查询_NoSQL注入之MongoDB

    01 背景 NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.NoSQL(不仅仅是 SQL)是数据存储的一个流 ...

  2. mongodb cond 模糊查询_为了实现在线库的复杂查询,你还在双写吗?

    一.在线库不支持在线复杂查询 做在线业务的开发者经常会碰到这样的难题:在线数据库上面运行稍微复杂点的查询,在线业务就挂了!不管是单机数据库如MySQL.PG,还是分布式数据库,HBase.MongoD ...

  3. mongodb模糊查询 php7_详解php7如何实现MongoDB模糊查询

    php7如何实现MongoDB模糊查询?MongoDB模糊查询语句相信对大家来说都不陌生,本文主要给大家介绍了在php 7中MongoDB实现模糊查询的方法,文中给出了详细的介绍和示例代码,对大家具有 ...

  4. 关于解决MYSQL的like模糊查询效率的一种方案

    大家都知道like %suibin% 这种查询的效率极低,而MYSQL也建议不要这样模糊查询,常用的是把数据同步到CACHE里: 1.比如同步到ES里用ES模糊查询.或者同步数据到MongoDB实现模 ...

  5. mongodb模糊查询包含特殊字符

    mongodb中的待特殊字符的模糊查询需要转义下才能查到 (name: /wo*2hjf/  查不到 name: /wo\*2hjf/  查得到  ) let str=wo*2hjf; let fil ...

  6. python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例

    本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...

  7. mongotemplate模糊查_java 中 mongodb的各种操作 模糊查询 精确查询 等等

    本意是想查查mongo数据库的int类型的like怎么查,但是好像没 解决这个问题. 精确查询:模糊查询:分页查询,每页多少:按某个字段排序(或升或降):查询数量:大于,小于,等于:且,或,某个字段不 ...

  8. java mongodb 模糊查询_Java操作MongoDB插入数据进行模糊查询与in查询功能的方法

    Java操作MongoDB插入数据进行模糊查询与in查询功能 由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法 具体如下: 存放mongodb: /** * 公共方法:设置Obj ...

  9. MongoDB模糊查询-查询某月的数据

    mongodb 模糊查询 应用场景: 做报表统计查询2019年02月的数据 db.getCollection('WT_SpareManage').find({"useDate":{ ...

最新文章

  1. python画图-python画图的两种方法
  2. PHP——获取上传文件的后缀名
  3. HDU 5473 There was a kingdom 凸包 DP
  4. Dataset之Fashion-MNIST:Fashion-MNIST数据集简介、下载、使用方法之详细攻略
  5. 【数据竞赛】从0梳理1场时间序列赛事!
  6. ajax 中文乱码问题 主要是IE浏览器
  7. button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例
  8. Java序列化接口Serializable接口的作用总结
  9. 信息学奥赛一本通C++语言——1032:大象喝水
  10. Java、JavaScript和JScript
  11. K8S学习笔记之MiniKube的搭建(VM虚拟机环境)
  12. 计算机开机界面用户如何删除,怎么删除电脑登陆账户_怎么删除电脑开机账户...
  13. 计算机网络中速率、带宽、吞吐量的区别
  14. 【IPC】关于码流类型的理解
  15. 计算机术语写祝福语,祝福语精选
  16. 从 sketch 中获取颜色、字体组件内容
  17. Linux内核PPP
  18. mdb转换为mysql_MS Access * .MDB转换为MySQL或SQLite,数据编码问题
  19. IDEA添加项目为library
  20. 【git】./git下路径某pack文件cannot be mapped:Resource temporarily unavailable

热门文章

  1. php rtmp服务器搭建,rtmp直播服务器的搭建(小白踩坑)
  2. #4259. 越野赛车问题
  3. 斜率优化dp 的简单入门
  4. 你逛过凌晨4点的校园吗? -- 前端人的漫漫长路
  5. 大量的if!=null_获得大量精彩游戏,并支持伟大事业!
  6. html 源码_HTML实例之搜索栏(附源码)
  7. linux中页缓冲和块缓冲之概念
  8. 二狗子的C语言学习之路(数组)
  9. Python模块:Random(未完待续)
  10. Word2Vec笔记