Latest web development tutorials

MongoDB regex

ekspresi reguler digunakan untuk menggambarkan penggunaan string tunggal, sejalan dengan serangkaian sintaksis aturan pertandingan tali.

Banyak bahasa pemrograman mendukung penggunaan ekspresi reguler untuk operasi string.

MongoDB menggunakan Operator regex $ untuk mengatur pencocokan string ekspresi reguler.

MongoDB menggunakan PCRE (Perl Compatible Regular Expression) sebagai bahasa ekspresi reguler.

Tidak seperti pencarian teks lengkap, kita menggunakan ekspresi reguler tidak perlu melakukan konfigurasi apapun.

Pertimbangkan hal berikut dokumen struktur Kumpulan tulisan, dokumen berisi isi dari artikel dan label:

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

Menggunakan ekspresi reguler

Perintah berikut menggunakan ekspresi reguler untuk menemukan artikel berisi string w3cschool.cc:

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

Pertanyaan di atas juga dapat ditulis sebagai:

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

ekspresi reguler kasus-sensitif

Jika Anda perlu mengambil kasus-sensitif, kita bisa mengatur opsi $ dari $ i.

Perintah berikut akan menemukan case-sensitive string yang w3cschool.cc:

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

Koleksi ini akan mengembalikan semua data yang berisi w3cschool.cc string tidak peka:

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

elemen array menggunakan ekspresi reguler

Kita juga bisa menggunakan ekspresi reguler di bidang array untuk menemukan konten. Hal ini berguna dalam realisasi label, jika Anda perlu untuk menemukan label berisi data (tutorial atau tutorial atau tutorialpoint atau tutorialphp) tutorial di awal, Anda dapat menggunakan kode berikut:

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

Mengoptimalkan Expressions permintaan Regular

  • Jika bidang indeks dokumen Anda diatur, maka penggunaan indeks dibandingkan dengan pencocokan ekspresi reguler untuk menemukan semua data query lebih cepat.

  • Jika ekspresi reguler adalah ekspresi awalan, semua data yang sesuai akan ditentukan prefix string untuk memulai. Sebagai contoh: Jika ekspresi reguler adalah ^ tut, permintaan tut akan melihat ke awal string.

Ada penggunaan kalimat biasa ada dua hal yang perlu diperhatikan:

ekspresi reguler menggunakan variabel. Pastikan untuk menggunakan kombinasi string eval akan mengkonversi setelah tidak dapat langsung diteruskan ke ekspresi string concatenation. Jika tidak ada pesan error, tapi hasilnya kosong! Contohnya adalah sebagai berikut:

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

Berikut ini adalah permintaan kabur berisi judul kata kunci tidak peka:

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