首页 > 数据库 >无涯教程-MongoDB - 正则

无涯教程-MongoDB - 正则

时间:2023-11-04 19:32:01浏览次数:73  
标签:正则表达式 MongoDB posts 无涯 正则 搜索 text post learnfk

在所有语言中,经常使用正则表达式来搜索任何字符串中的模式或单词, MongoDB还提供了使用 $regex 运算符进行字符串模式匹配。

与文本搜索不同,无涯教程不需要进行任何配置或命令即可使用正则表达式。

考虑 posts 集合下的以下文档结构,其中包含帖子文本及其标签-

{
   "post_text": "enjoy the mongodb articles on learnfk",
   "tags": [
      "mongodb",
      "learnfk"
   ]
}

使用正则表达式

以下正则表达式查询搜索其中所有包含字符串 learnfk 的帖子-

>db.posts.find({post_text:{$regex:"learnfk"}})

相同的查询也可以写成-

>db.posts.find({post_text:/learnfk/})

不区分大小写

为了使搜索不区分大小写,无涯教程使用值为 $i 的 $options 参数。以下命令将查找具有单词 learnfk 的字符串,而不考虑大小写或小写字母-

>db.posts.find({post_text:{$regex:"learnfk",$options:"$i"}})

该查询返回的输出之一是以下文档,其中包含单词 learnfk 在不同情况下-

{
   "_id" : ObjectId("53493d37d852429c10000004"),
   "post_text" : "hey! this is my post on LearnFk", 
   "tags" : [ "learnfk" ]
} 
 

数组正则表达式

无涯教程还可以在数组字段上使用正则表达式的概念。如果您要搜索所有带有单词单词回肠荡气(tutorial或tutorialphp)开头的标签的帖子,则可以使用以下代码-

>db.posts.find({tags:{$regex:"tutorial"}})

优化正则查询

  • 如果文档字段已被索引,则查询将使用索引值来匹配正则表达式,与正则表达式扫描整个集合相比,这使搜索非常快。

  • 如果正则表达式是前缀表达式,则所有匹配项均应以某个字符串字符开头,如果正则表达式为 ^ tut ,则查询只需搜索以 tut 开头的字符串。

参考链接

https://www.learnfk.com/mongodb/mongodb-regular-expression.html

标签:正则表达式,MongoDB,posts,无涯,正则,搜索,text,post,learnfk
From: https://blog.51cto.com/u_14033984/8184863

相关文章

  • 无涯教程-MongoDB - 文本搜索
    从2.4版开始,MongoDB开始支持文本索引来搜索字符串内容,文本搜索使用词干搜索技术通过删除词干停止词(例如a,an,the,等)来在字符串字段中查找指定的词。目前,MongoDB支持大约15种语言。启用文本搜索最初,"TextSearch"是一项实验性函数,但从2.6版开始,默认情况下启用此配置。但是如果......
  • 无涯教程-MongoDB - Map-Reduce
    根据MongoDB文档,Map-reduce是一种数据处理范例,用于将大量数据压缩为有用的聚合输出。MongoDB使用mapReduce命令进行map-reduce操作。MapReduce通常用于处理大型数据集。MapReduce命令以下是基本mapReduce命令的语法->db.collection.mapReduce(function(){emit(key,......
  • MySQL正则表达式
    1. 正则表达式运算符expressionNOTREGEXPpattern,expressionNOTRLIKEpatternexpressionREGEXPpattern,expressionRLIKEpattern如果表达式expression匹配给定模式pattern返回1,否则返回0.如果表达式expression或者模式pattern为NULL,则返回NULLRLIKE和REGEXP一样.2......
  • 无涯教程-MongoDB - 原子操作
    MongoDB不支持多文档原子事务,但是,它在单个文档上提供了原子操作,因此,如果文档具有一百个字段,那么update语句将不更新所有字段,或者不更新任何字段,从而在文档级别上保持原子性。原子操作的模型数据保持原子性的推荐方法是保留所有相关信息,这些信息经常使用嵌入式文档一起更新在单......
  • 无涯教程-MongoDB - 覆盖查询
    在本章中,无涯教程将学习涵盖的查询。Covered查询根据官方的MongoDB文档,涵盖的查询是以下查询-查询中的所有字段都是索引的一部分。查询中返回的所有字段都在同一索引中。由于查询中存在的所有字段都是索引的一部分,因此MongoDB会匹配查询条件,并使用相同的索引返回输出,而无需......
  • 无涯教程-MongoDB - 数据库引用
    如MongoDB关系的最后一章所示,为了在MongoDB中实现规范化的数据库结构,无涯教程使用了引用关系的概念,也称为ManualReferences,其中无涯教程手动将参考文件的ID存储在其他文件中。但是,如果文档包含来自不同集合的引用,则可以使用MongoDBDBRefs。使用DBRefDBRefs中有三个字段-......
  • 什么是机器学习中的正则化?
    1.引言在机器学习领域中,相关模型可能会在训练过程中变得过拟合和欠拟合。为了防止这种情况的发生,我们在机器学习中使用正则化操作来适当地让模型拟合在我们的测试集上。一般来说,正则化操作通过降低过拟合和欠拟合的可能性来帮助大家获得最佳模型。在本文中,我们将了解什么是正则化,......
  • 无涯教程-MongoDB - PHP
    要将MongoDB与PHP一起使用,您需要使用MongoDBPHP驱动程序,从URL下载PHP驱动程序,确保下载最新版本,现在解压缩并将php_mongo.dll放入您的PHP扩展目录(默认为"ext"),并将以下行添加到php.ini文件中-extension=php_mongo.dll连接数据库要创建连接,您需要指定数据库名称,如果数据库不......
  • 无涯教程-MongoDB - 复制数据
    复制是跨多个服务器同步数据的过程,复制提供了冗余,并通过不同数据库服务器上的多个数据副本提高了数据可用性,复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复,使用其他数据副本,您可以将其专用于灾难恢复,报告或备份。复制工作方式MongoDB通过使用副本集......
  • 无涯教程-MongoDB - Java
    在本章中,无涯教程将学习如何设置MongoDBJDBC驱动程序。安装驱动在Java程序中开始使用MongoDB之前,需要确保在计算机上设置了MongoDBJDBC驱动程序和Java,您可以检查Java教程以在计算机上安装Java。现在,让无涯教程检查如何设置MongoDBJDBC驱动程序。您需要从路径下载 jarmong......