Latest web development tutorials

MongoDB regex

Wyrażenia regularne są używane do opisania zastosowanie pojedynczego łańcucha, zgodnie z serią składniowej zasady dopasowania ciąg.

Wiele języków programowania obsługują wyrażeń regularnych do operacji łańcuchowych.

MongoDB używa $ Operator regex ustawić ciąg pasujący do wyrażenia regularnego.

MongoDB wykorzystuje PCRE (Perl Compatible Regular Expression) jako zwykły język ekspresji.

W przeciwieństwie do wyszukiwania pełnotekstowego, używamy wyrażenia regularnego nie musi wykonywać żadnej konfiguracji.

Rozważmy następujący zestaw dokumentów struktury stanowisk, dokument zawiera treści artykułu i na etykiecie:

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

Korzystanie z wyrażeń regularnych

Następujące polecenia używać wyrażeń regularnych znaleźć artykuł zawiera w3cschool.cc ciągi:

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

Powyższe zapytanie można również zapisać jako:

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

Wyrażenia regularne wielkości liter

Jeśli chcesz, aby pobrać wielkości liter, możemy ustawić opcje $ za $ i.

Następujące polecenie znajdzie wielkosc liter ciąg w3cschool.cc:

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

Kolekcja powróci wszystkich danych zawierających w3cschool.cc ciąg nie jest uwzględniana wielkość liter:

{
   "_id" : ObjectId("53493d37d852429c10000004"),
   "post_text" : "hey! this is my post on  W3Cschool.cc", 
   "tags" : [ "tutorialspoint" ]
} 

Elementy tablicy przy użyciu wyrażeń regularnych

Możemy również użyć wyrażeń regularnych w polu tablicy znaleźć treści. Funkcja ta jest przydatna w realizacji etykiecie, jeżeli trzeba znaleźć etykieta zawiera dane (samouczek lub tutoriale lub tutorialpoint lub tutorialphp) Samouczek na początku, można użyć następującego kodu:

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

Optymalizacja wyrażeń regularnych zapytanie

  • Jeśli pole indeksu dokument jest ustawiony, a następnie zastosowanie wskaźnika w porównaniu do dopasowywania wyrażeń regularnych, aby znaleźć wszystkie dane zapytań szybciej.

  • Jeśli wyrażenie regularne jest wyrażeniem prefiksu, wszystkie dane zostaną określone pasujące prefiks ciąg, aby rozpocząć. Na przykład: Jeśli wyrażenie regularne jest ^ tut, tut zapytanie będzie wyglądać na początku łańcucha.

Jest użycie wyrażeń regularnych istnieją dwa punkty do odnotowania:

Wyrażenia regularne przy użyciu zmiennych. Pamiętaj, aby użyć kombinacji ciąg eval konwertuje po nie mogą być bezpośrednio przekazywane do wyrażenia konkatenacji. W przeciwnym razie nie ma komunikatu o błędzie, ale wynik jest pusty! Przykłady są następujące:

var name=eval("/" + 变量值key +"/i"); 

Poniżej znajduje się rozmyty zapytanie zawiera Tytuł Hasło nie jest uwzględniana wielkość liter:

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}