English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB 정규 표현식

정규 표현식은 모든 언어에서 문자열이나 패턴을 검색하는 데 자주 사용됩니다. MongoDB는 $regex 연산자를 사용하여 문자열 패턴 매칭에 정규 표현식 기능을 제공합니다. MongoDB는 PCRE (Perl兼容정규 표현식)를 정규 표현식 언어로 사용합니다.

문자열 검색과는 달리, 정규 표현식을 사용할 때 어떤 설정이나 명령도 필요하지 않습니다.

이미 " posts 의 데이터베이스에 문서를 삽입했습니다. 다음과 같습니다

>db.posts.insert(
{
   "post_text": "enjoy the mongodb articles on w"3codebox",
   "tags": [
      "mongodb",
      "w3codebox"
   ]
codebox" ]
WriteResult({ "nInserted": 1 })

정규 표현식을 사용하여

다음 regex 쿼리는 문자열 w를 포함하는 문자열을 검색합니다3codebox의 모든 게시물–

>db.posts.find({post_text:{$regex:"w"3codebox"}}).pretty(){
	"_id": ObjectId("5dd7ce28f1dd4583e7103fe0"),
	"post_text": "enjoy the mongodb articles on w"3codebox",
	"tags": [
		"mongodb",
		"w3codebox"
	]
codebox" ]
{
	"_id": ObjectId("5dd7d111f1dd4583e7103fe2",
	"post_text": "enjoy the mongodb articles on w"3codebox",
	"tags": [
		"mongodb",
		"w3codebox"
	]
codebox" ]
>

相同的查询也可以写成-

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

使用不区分大小写的正则表达式

为了使搜索不区分大小写,我们使用$options带有value的参数$i。以下命令将查找带有单词的字符串w3codebox,而不考虑大小写或小写字母-

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

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

{
   "_id": ObjectId("53493d37d852429c10000004",
   "post_text": "hey! this is my post on w"3codebox", 
   codebox",3"tags" : [ "w
codebox" ]

}

배열 요소에 정규 표현식 사용-

우리는 배열 필드에도 정규 표현식 개념을 사용할 수 있습니다. 태그 기능을 구현할 때 이는 매우 중요합니다. 따라서 태그를 가진 모든 단어가 tutorial(튜토리얼 또는 tutorialpoint 또는 tutorialphp)로 시작하는 모든 단어를 검색하려면 다음 코드를 사용할 수 있습니다.

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

  • 정규 표현식 쿼리 최적화document 필드가indexed

  • 그렇다면 정규 표현식을 사용하여 쿼리는 인덱스 값을 사용하여 정규 표현식을 일치시킵니다. 정규 표현식 스캔 전체 컬렉션보다 이는 검색이 매우 빠르게 합니다.프리픽스 표현식그렇다면 모든 일치 항목은 특정 문자 문자로 시작해야 합니다. 예를 들어, regex 표현식이^tut이 경우 쿼리는 단지 시작하는 문자열만 검색해야 합니다.tut