Navicat使用教程:在MongoDB中执行正则表达式搜索

翻译|使用教程|编辑:莫成敏|2019-11-15 15:50:15.693|阅读 63 次

概述:正则表达式(regex)提供了一种将字符串与模式进行匹配的方法,以使您的搜索“模糊”而不是精确。在今天的文章中,我们将学习如何在MongoDB中使用正则表达式。

相关链接:

正则表达式(regex)提供了一种将字符串与模式进行匹配的方法,以使您的搜索“模糊”而不是精确。MongoDB内置有一个正则表达式引擎,因此即使您不确切知道要查找的确切Field值是多少,您也可以对其进行挖掘。在今天的文章中,我们将使用Navicat for MongoDB学习如何在MongoDB中使用正则表达式。Navicat Premium 12.1也支持MongoDB哦~

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

点击下载Navicat Premium正式版

基本语法

MongoDB提供了正则表达式运算符,用于在集合中搜索字符串。下面的示例显示了如何使用Sakila示例数据库完成此操作:

假设我们想查找名为“DAN”、“DANNY”甚至“DANIEL”的电影。这是执行此操作的语句:

db.film_list.find({actors:{$ regex:“ DAN”}})

成功执行命令后,将显示以下输出:

Navicat使用教程:在MongoDB中执行正则表达式搜索

我们可以通过删除“$ regex:”限定符并将搜索字符串括在正斜杠(/)而不是引号中来简化语句,因为正斜杠表示正则表达式:

db.film_list.find({actors:/ DAN /})

使用多个搜索字符串进行搜索

我们可以在搜索字符串中包含多个以匹配各种组合。假设我们想通过匹配“Carrie Moss”或“moss carrie-anne”来查找Carrie-Anne Moss的电影。这是执行此操作的语句:

db.film_list.find(
   { actors: { $elemMatch: { actors: /Moss/i, actors: /carrie-anne/i } } }
);

$ elemMatch将返回这些记录,其中数组元素匹配两个条件。相反,如果使用不带$ elemMatch的纯$和(这是标准列表的默认设置),则返回的电影将带有“Carrie-Anne Moss”,但也带有“Sandra Moss”和“Carrie-Anne Fisher”的那些电影。那将更多地是我们要检索的信息的超集。还要注意“i”标志;它使正则表达式不区分大小写。这对于用户输入的搜索很有用,因为我们不能依赖用户使用大小写混合。

选项参数

我们还可以通过options参数为正则表达式提供其他说明。

  • i:不区分大小写以匹配大小写。

  • m:对于包含锚点的模式(即,^表示开始,$表示结束),请在每行的开头或结尾匹配具有多行值的字符串。如果没有此选项,这些锚点将在字符串的开头或结尾匹配。

  • x:扩展功能可以忽略$ regex模式中的所有空白字符,除非转义或包含在字符类中。与其他标志不同,此标志需要$ regex和$ options语法

  • s:允许点字符(.)匹配所有字符,包括换行符。

结论

$ regex运算符提供了MongoDB中模式匹配的简便方法。为了获得最佳结果,请确保对要搜索的文档字段建立索引。这样,查询将使用索引值来匹配正则表达式。与正则表达式扫描整个集合相比,这使搜索非常快。


想要购买Navicat Premium正版授权,或了解更多产品信息请点击“咨询在线客服”

850×68.png



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:Navicat https://www.navicat.com/en/company/aboutus/blog/1011-performing-regular-expression-searches-in-mongodb.html

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Navicat for MySQL

Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。

Navicat for PostgreSQL

Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具

Navicat for Oracle

Navicat for Oracle是一套超强的Oracle数据库系统管理工具,包括数据模型工具、数据或结构同步、导入或导出、和报表,令维护数据的进程更容易。

Navicat Premium

Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。

Navicat for SQL Server

Navicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具

Navicat for SQLite

Navicat for SQLite 是一套专为SQLite 设计的强大数据库管理及开发工具

Navicat Data Modeler

Navicat Data Modeler是一款数据建模图形化工具,为创建数据建模带来一种全新的体验。

Navicat Essentials

Navicat Essentials是一个小型版本的 Navicat,提供了数据库管理的基本和必需功能。

Navicat for MariaDB

Navicat for MariaDB 为 MariaDB 数据库管理提供了一个原生环境。你可以直观地设计数据库结构、运行 SQL 查询和脚本、管理 MariaDB 用户及其权限。

Navicat Report Viewer

Navicat Report Viewer 是一款Navicat Report Builder查看器,可以浏览由Navicat Report Builder创建设计的报表文件。

Navicat Monitor

安全、简单而且无代理的远程服务器监控工具。

在线
客服
在线
QQ
电话
咨询
400-700-1020
购物车 反馈 返回
顶部
在线客服系统
live chat