MongoDB 正则表达式

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

示例

MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。

复制代码
> db.col.find()
{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }
{ "_id" : ObjectId("56c6bc9e64799370c0ef358c"), "x" : "nothing" }
> db.col.find({x:/world/}) { "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] } { "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
> db.col.find({x:{$regex:"world"}}) { "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] } { "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
复制代码

上面后两种操作是等价的。

不区分大小写

> db.col.find({x:{$regex:"world", $options:"$i"}})
{ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }
{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }
{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }

or

> db.col.find({x:/world/i})
{ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }
{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }
{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }

数组使用正则表达式

> db.col.find({tags:/b/})
{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }
{ "_id" : ObjectId("56c6bedf64799370c0ef358e"), "tags" : [ "abc", "m" ] }

可见数组中包含字符‘b’的都找出来了(包括“abc”)。

正则中包含变量

需要用eval将组合的字符串进行转换

复制代码
> v="world"
world

> db.col.find({x:eval("/" + v + "/i")})
{ "_id" : ObjectId("56c6bd9964799370c0ef358d"), "x" : "hihi WORLD" }
{ "_id" : ObjectId("56c6bbfe64799370c0ef358b"), "x" : "hi world", "tags" : [ "b" ] }
{ "_id" : ObjectId("56c6bbef64799370c0ef358a"), "x" : "hello world", "tags" : [ "a", "b" ] }
复制代码

 





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/5201225.html,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
20天前
|
自然语言处理 NoSQL MongoDB
MongoDB 正则表达式
10月更文挑战第23天
17 2
|
5月前
|
数据采集 监控 NoSQL
MongoDB 正则表达式详解:高效数据查询与处理技巧
MongoDB 正则表达式详解:高效数据查询与处理技巧
128 0
|
自然语言处理 NoSQL MongoDB
MongoDB:20-MongoDB- 正则表达式
MongoDB:20-MongoDB- 正则表达式
235 0
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r'string'`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
|
5月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
55 2
|
5月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
5月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
5月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
5月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
58 2