mongodb怎么写sql查询 mongodb sql_字符串


介绍:

在本文中,我们将了解如何使用Regex 像SQL Like语句一样在MongoDB中进行搜索

要从集合中选择文档,可以使用db.collection.find()方法。要选择集合中的所有文档,请将空文档作为查询过滤器文档传递给该方法。

在shell中,复制并粘贴以下内容以返回members集合中的所有文档。

要格式化结果,请将追加.pretty()到find操作:

db.members.find({}).pretty()

使用正则表达式搜索Word

现在,我们正在使用.find()查询集合的方法,我们可以稍稍修改语法,并开始基于单词或短语查找匹配项,这些单词或短语可能是给定字段中的部分匹配项,类似于SQL引擎的LIKE运算符。

诀窍是利用正则表达式(或简称regex),这基本上是定义搜索模式的文本字符串。有许多用稍微不同的语法编写的regex引擎,但是基本原理都相同,在这种情况下,MongoDB使用Perl Regex(PCRE)引擎。

MongoDB的Regex用法:

$regex :为查询中的模式匹配字符串提供正则表达式功能。

$options: 为正则表达式提供各种选项,常用选项举例:

i :大小写不敏感,以匹配大小写。

m描述模式匹配的位置,开始还是结束位置

x:“扩展”功能,可以忽略$regex模式中的所有空白字符,除非转义或包含在字符类中

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

用法示例:

在最基本的级别上,正则表达式是在字符串的两边都用单斜杠(/)括起来的字符串。

例如,如果我们要使用正则表达式执行与上述相同的查询并找出多少members服务Neha,则可以将字符串“ Neha”替换为/ Neha /:

db.members.find( { name: /Neha/ } )

但是想象一下,我们想找到自治市镇以前三个字符“ Neha”开头的餐馆数量。我们将对正则表达式进行非常小的修改,如下所示:

db.members.find( { name: /^Neha/ } )

尖号字符(^)指定了我们字符串中应该作为开始的位置,因此,如果我们有一个文档,该三个字母位于字段的中间,则不会匹配。

这通知正则表达式引擎我们希望搜索不区分大小写,无论大小写都匹配。我们还在正则表达式右斜杠(/)之后添加了特殊的i标志:

db.members.find( { name: /Neha/i } )

在Node.JS中将变量regex与MongoDB结合使用

var search ='Neha';db.members.find(name: new RegExp(search)) //For substring search, case sensitive. db.members.find(name: new RegExp('^' + search + '$')) //For exact search, case sensitivedb.members.find(name: new RegExp(search, ‘i')) //For substring search, case insensitivedb.members.find(name: new RegExp('^' +search + '$', 'i')); //For exact search, case insensitive

常用表达式语法:


mongodb怎么写sql查询 mongodb sql_正则表达式_02