类似于 MongoDB 中的 SQL LIKE 语句的查询
MongoDB 是一个强大的 NoSQL 数据库服务器。它使用带有可选模式的类 JSON 文档来存储数据。
对于开发人员来说,组织数据始终是一项必不可少的任务,因为它在应用程序的性能中起着最关键的作用。在 MongoDB 中,你可以使用类似于 SQL LIKE
语句的查询来获取数据。
在 MongoDB 中创建数据库
我们将在本教程中的示例中使用一些虚拟数据。你还可以创建数据库并执行下面给出的命令来插入虚拟数据。
db={
"colors": [
{
"id": 100,
"color": "Pink"
},
{
"id": 101,
"color": "Purple"
},
{
"id": 102,
"color": "Black"
},
{
"id": 103,
"color": "Blue"
}
]
}
MongoDB 中的 db.collection.find()
方法
在 MongoDB 集合中搜索时,最关键的部分是灵活而直接的 db.collection.find()
方法。
使用 db.collection.find(),
,你可以通过几个简单的参数传递文档集合并返回一个光标
,从而轻松查询文档集合。
游标
只是一个结果集。我们可以遍历它来操作或以其他方式使用光标
指向的文档。
db.collection.find()
方法的一个简单示例如下所示。
> db.colors.find()
输出:
上面的程序返回一个集合中的所有文档。但这对于生产要求来说是非常少见的。
你总是需要一些来自数据库的过滤结果。
例如,如果你想获取包含 color: Pink
的所有数据。执行下面的查询。
> db.colors.find({color: "Pink"})
输出:
使用 db.collection.find()
方法查询类似于 MongoDB 中的 SQL LIKE 语句
你可以使用正则表达式在 MongoDB 中搜索文档。这将类似于 SQL 查询中的 LIKE
语句。
现在你正在使用 .find()
来查询你的集合,你可以稍微改变你的语法并开始根据可能是特定字段中的部分匹配的单词或短语来查找匹配项,类似于 SQL 引擎的方式使用 LIKE
运算符。
该技巧利用正则表达式 (regex),即定义搜索模式的文本字符串。几个正则表达式引擎是用不同的语法编写的,但基本原理是相同的。
在最基本的层面上,正则表达式是两边用一个斜杠 (/
) 括起来的字符串。
db.collection.find({
"k": /pattern/
})
但目前,由于 shell 正则表达式在查询 mongoplayground.net
时不起作用,你可以使用下面给出的表达式。
db.collection.find({
"k": {
"$regex": "pattern"
}
})
例如,如果你想使用正则表达式执行与上例相同的查询并找出有多少文档包含颜色 Pink
,你可以将字符串 "Pink"
替换为 /Pink/
。
使用 db.collection.find()
方法在任何地方搜索匹配的字符串
第一条语句将搜索颜色名称在字符串中任何位置包含 Pink
的所有文档。第二条语句搜索颜色名称中包含 Bl
的所有记录。
此查询的 SQL 语句:
select * from colors where color LIKE "%Pink%"
此查询的 MongoDB 语句:
db.colors.find({
"color": {
"$regex": "Pink"
}
})
输出:
此查询的 MongoDB 语句:
db.colors.find({
"color": {
"$regex": "Bl"
}
})
输出:
使用正则表达式而不是标准的带引号的字符串,你可以开始查找部分单词或短语匹配。
使用带有^
的 db.collection.find()
方法来搜索匹配字符串的起始字符
这将匹配所有以字符 P
开头的字符串。例如,使用了胡萝卜^
符号。
此查询的 SQL 语句:
select * from colors where color LIKE "P%"
此查询的 MongoDB 语句:
db.colors.find({
"color": {
"$regex": "^P"
}
})
输出:
使用带有 $
的 db.collection.find()
方法来搜索匹配的字符串结束字符
美元 $
符号匹配以特定字符结尾的字符串。
下面的示例匹配所有以字符 k
结尾的字符串。
此查询的 SQL 语句:
select * from colors where color LIKE "%k"
此查询的 MongoDB 语句:
db.colors.find({
"color": {
"$regex": "k$"
}
})
输出:
使用 db.collection.find()
方法和 i
在任何情况下搜索匹配字符串
默认的 db.collection.find
方法搜索时区分大小写。但是,你可以使用下面使用的 i
选项指示 find
命令在任何情况下匹配字符。
此查询的 SQL 语句:
select * from colors where color LIKE BINARY "pink"
此查询的 MongoDB 语句:
db.colors.find({
"color": {
"$regex": "k$/i"
}
})
输出:
这篇 MongoDB 教程文章教你如何在 MongoDB 中搜索类似于 SQL LIKE
语句的数据库。
相关文章
在 MongoDB Shell 中列出所有数据库
发布时间:2023/05/11 浏览次数:180 分类:MongoDB
-
交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。
MongoDB 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:1024 分类:MongoDB
-
这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 MongoDB 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:214 分类:MongoDB
-
在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 MongoDB
发布时间:2023/05/11 浏览次数:745 分类:MongoDB
-
要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便
在 MongoDB 中存储日期和时间
发布时间:2023/05/11 浏览次数:762 分类:MongoDB
-
本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。
MongoDB 按 ID 查找
发布时间:2023/05/11 浏览次数:1856 分类:MongoDB
-
MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。
检查 MongoDB 服务器是否正在运行
发布时间:2023/05/11 浏览次数:247 分类:MongoDB
-
这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。
MongoDB 中的分页
发布时间:2023/05/11 浏览次数:174 分类:MongoDB
-
这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。
MongoDB 从查询开始
发布时间:2023/05/11 浏览次数:186 分类:MongoDB
-
在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。