Làm cách nào để sử dụng biểu thức chính quy trong truy vấn MongoDB?

Biểu thức chính quy là một cách quan trọng để chỉ định mẫu cho một tìm kiếm phức tạp. Toán tử MongoDB $regex cung cấp một cách như vậy để tìm kiếm một chuỗi sau khi khớp với một mẫu đã chỉ định

Trong MongoDB, khớp mẫu có thể được thực hiện bằng cách sử dụng các đối tượng biểu thức chính quy hoặc sử dụng toán tử $regex

Tên cơ sở dữ liệu của chúng tôi là 'myinfo' và tên bộ sưu tập của chúng tôi là 'sinh viên'. Đây, là bộ sưu tập dưới đây

Bộ sưu tập mẫu "sinh viên"

[
        {
                "f_name" : "Zenny",
                "sex" : "Female",
                "class" : "VI",
                "age" : 12,
                "grd_point" : 32.6342
        },
        {
                "f_name" : "Paul",
                "sex" : "Male",
                "class" : "VII",
                "age" : 13,
                "grd_point" : 29.5904
        },
        {
                "f_name" : "Tom",
                "sex" : "Male",
                "class" : "VI",
                "age" : 11,
                "grd_point" : 30.1257
        },
        {
                "f_name" : "Lassy",
                "sex" : "Female",
                "class" : "VIII",
                "age" : 13,
                "grd_point" : 28.2514
        },
        {
                "f_name" : "Peter",
                "sex" : "Male",
                "class" : "VI",
                "age" : 11,
                "grd_point" : 31.5201
        }
]	
		

Ví dụ về toán tử truy vấn đánh giá MongoDB - $regex

Nếu chúng tôi muốn chọn tất cả các tài liệu từ bộ sưu tập "sinh viên" thỏa mãn điều kiện -

Tên f_name phải bắt đầu bằng chữ "P"

lệnh mongodb sau đây có thể được sử dụng

>db.student.find( { f_name: { $regex: 'P.*'} } ).pretty();

N. B. Phương thức find() hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty()

Lệnh tương đương SQL là

SELECT * 
FROM student 
WHERE f_name LIKE 'P%';

đầu ra

{
        "_id" : ObjectId("527b3cc65ceafed9b2254a95"),
        "f_name" : "Paul",
        "sex" : "Male",
        "class" : "VII",
        "age" : 13,
        "grd_point" : 29.5904
}
{
        "_id" : ObjectId("527b3cc65ceafed9b2254a98"),
        "f_name" : "Peter",
        "sex" : "Male",
        "class" : "VI",
        "age" : 11,
        "grd_point" : 31.5201
}

Nếu chúng ta viết câu lệnh mongodb ở trên như bên dưới thì sẽ không có đầu ra nào

>db.student.find( { f_name: { $regex: 'p.*'} } ).pretty();

Vì không có f_name nào bắt đầu bằng chữ 'p'. Trong trường hợp đó để tránh phân biệt chữ hoa chữ thường, chúng ta có thể viết câu lệnh trên theo cách sau. Đây là ví dụ -

>db.student.find( { f_name: { $regex: 'p.*', $options: 'i' } } ).pretty();

Tùy chọn "$option. i" được sử dụng để tránh phân biệt chữ hoa chữ thường

Câu lệnh trên có thể được viết mà không sử dụng $regex mà sử dụng các đối tượng biểu thức chính quy. Đây là các lệnh -

Có hai loại danh mục cơ sở dữ liệu - RDBM hoặc cơ sở dữ liệu quan hệ như Oracle, SQL Server, v.v. Cái còn lại là cơ sở dữ liệu NoQuery như MongoDB, CosmosDB, v.v. MongoDB đã trở nên phổ biến so với các cơ sở dữ liệu khác vì thiết kế đơn giản, kiểm soát đơn giản đối với dữ liệu được lưu trữ và cung cấp khả năng chia tỷ lệ theo cả chiều dọc và chiều ngang. Bài viết này giải thích MongoDB Regex và khớp mẫu có và không có toán tử $regex.  

Được chứng nhận với IBM và UCI DCE

Chương trình đào tạo kỹ thuật dữ liệu UCI Đăng ký ngay

Làm cách nào để sử dụng biểu thức chính quy trong truy vấn MongoDB?

MongoDB Regex là gì?

Biểu thức chính quy được sử dụng để khớp các mẫu. Không có gì khác ngoài việc tìm các chuỗi trong tài liệu. Đôi khi, không biết giá trị trường chính xác để tìm kiếm trong khi truy xuất tài liệu trong bộ sưu tập. Để hỗ trợ truy xuất dữ liệu dựa trên các giá trị tìm kiếm khớp mẫu, người ta có thể sử dụng các biểu thức chính quy.  

MongoDB cung cấp dịch vụ tìm kiếm một mẫu trong chuỗi bằng biểu thức chính quy trong khi truy vấn. Nó sử dụng biểu thức chính quy tương thích với Perl (PCRE) phiên bản 8. 42 và hỗ trợ UTF-8. Người ta có thể thực hiện khớp mẫu trong MongoDB - với toán tử $regex và không có toán tử $regex.  

So khớp mẫu bằng Toán tử $regex

Toán tử $regex cung cấp các khả năng biểu thức chính quy cho các chuỗi khớp mẫu trong các truy vấn. Nói một cách đơn giản hơn, sử dụng toán tử này, người ta có thể tìm kiếm chuỗi đã cho trong một tập hợp cụ thể. Nếu không biết giá trị trường chính xác mà người ta đang tìm kiếm trong tài liệu, toán tử này có thể hữu ích.  

cú pháp

{ : { $regex: /pattern/, $options: '' } }

{ : { $regex: 'pattern', $options: '' } }

tùy chọn $

The following are available in MongoDB to use with regular expressions:

  • s - Cho phép dấu chấm (. ) để khớp với tất cả các ký tự, kể cả ký tự xuống dòng.  
  • x - Để bỏ qua tất cả các ký tự khoảng trắng trong mẫu $regex.  
  • i - Được sử dụng để khớp cả mẫu chữ hoa và chữ thường trong chuỗi.  
  • m - Sử dụng ^ và $ để tìm kiếm cụ thể ^ và $ bên trong chuỗi. Nếu chúng không được sử dụng, các ký tự neo này sẽ khớp ở đầu hoặc cuối chuỗi

Thí dụ.  

Hiển thị chi tiết của các thành viên có từ cấp cao trong trường vị trí của họ

db. thành viên. tìm ({vị trí. {$regex. "cao cấp"}}). đẹp()

Trong trường hợp này, hãy hiển thị tài liệu của thành viên có trường vị trí chứa chuỗi cấp cao. Để có được điều đó, hãy chuyển một biểu thức chính quy bằng toán tử $regex, i. e. {$regex. “senior”} cho trường vị trí trong phương thức find().  

>db. thành viên. tìm ({vị trí. ($regex. "cao cấp"}}). đẹp()

{

"_Tôi". ObjectId("6012d803fcb649933cd59833"),

"Tên". "Tony",

"tuổi". "32",

"Chức vụ". "Thành viên liên kết"

}

{

_Tôi". ObjectId("6012d803fcb649933cd59834"),

"Tên". "Lý Tiểu Long",

"tuổi". "25",

"Chức vụ". "Thành viên hàng đầu"

}

>

khóa học miễn phí. Giới thiệu về Khoa học dữ liệu

Tìm hiểu kiến ​​thức cơ bản về khoa học dữ liệu Đăng ký ngay

Làm cách nào để sử dụng biểu thức chính quy trong truy vấn MongoDB?

Những điểm chính cần nhớ

  • Người ta không thể sử dụng toán tử $regex bên trong toán tử $in.  
  • Nếu chỉ mục của trường đã chỉ định có sẵn cho biểu thức chính quy phân biệt chữ hoa chữ thường, thì MongoDB sẽ khớp chúng với các giá trị chỉ mục. Họ không sử dụng các chỉ mục một cách hiệu quả cho các truy vấn biểu thức chính quy phân biệt chữ hoa chữ thường.  
  • Việc sử dụng toán tử $regex để thêm một biểu thức chính quy bên trong danh sách điều kiện truy vấn được phân tách bằng dấu phẩy là bắt buộc.  
  • Sử dụng biểu thức toán tử $regex với $options để sử dụng các tùy chọn x và s.  
  • Với phiên bản mới nhất của MongoDB 4. 0. 7, người ta có thể sử dụng toán tử $not với biểu thức toán tử $regex.  
  • Sử dụng toán tử $regex nếu biểu thức chính quy tương thích với Perl không được hỗ trợ trong JavaScript.  

So khớp mẫu mà không sử dụng toán tử $Regex

Có thể khớp các mẫu mà không cần sử dụng toán tử $regex trong MongoDB. Để làm như vậy, hãy sử dụng đối tượng biểu thức chính quy để chỉ định biểu thức chính quy. Ngoài ra, hãy sử dụng các biểu thức chính quy bên trong toán tử $in bằng cách sử dụng các đối tượng biểu thức chính quy.  

cú pháp

{ : /pattern/ }

// có nghĩa là chỉ định tiêu chí tìm kiếm ở giữa các dấu phân cách.  

Thí dụ

Hiển thị thông tin chi tiết của các thành viên có từ 'te' trong tên của họ bằng cách sử dụng các đối tượng biểu thức chính quy

db. thành viên. tìm ({Tên. /te/}). đẹp()

Tại đây, hiển thị tài liệu của các thành viên có tên chứa chuỗi ‘te’. Vì vậy, vượt qua một biểu thức chính quy, tôi. e. {Tên. /te/} cho trường tên trong phương thức find(). // được sử dụng để chỉ định tiêu chí tìm kiếm giữa các dấu phân cách, i. e. ,/te/.  

>db. Nhân viên. tìm ({Tên. /te/}). đẹp()

{

"_Tôi". ObjectId("6012d803fcb649933cd59836"),

"Tên". "Steve",

"tuổi". "32",

"Chức vụ". "Nhà phân tích dữ liệu"

}

{

"_Tôi". ObjectId("6012d803fcb649933cd59838"),

"Tên". "Peter",

"tuổi". "22",

"Chức vụ". "Kỹ sư phần mềm trẻ"

}

>

chủ đề liên quan

  1. Tạo Bộ sưu tập trong MongoDB
  2. Bộ sưu tập thả trong MongoDB
  3. Tài liệu cập nhật MongoDB
  4. Các kiểu dữ liệu trong MongoDB
  5. Bảng mã MongoDB
Chương trình Chứng chỉ Chuyên nghiệp về Khoa học Dữ liệu của Simplilearn hợp tác với Đại học Purdue và hợp tác với IBM, được xếp hạng số 1 Sau đại học về chương trình Khoa học Dữ liệu bởi ET. Nếu bạn muốn thành công về khoa học dữ liệu, chương trình này chính là chương trình dành cho bạn

Phần kết luận

Bạn có biết điều gì làm tăng giá trị cho bất kỳ doanh nghiệp nào không? . Các nhà khoa học dữ liệu có giá trị đối với công ty, từ việc giúp nhân viên cấp cao đưa ra quyết định tốt hơn cho đến tuyển dụng ứng viên. Các nhà khoa học dữ liệu đang thống trị các thị trường mới nổi. Với mức tăng trưởng khổng lồ 37%, khoa học dữ liệu đã trở thành một trong những ngành học đòi hỏi khắt khe nhất. Vì vậy, bạn có muốn kiếm cho mình một công việc lương cao bằng cách trở thành một nhà khoa học dữ liệu không? .  

Thông tin về các Tác giả

Làm cách nào để sử dụng biểu thức chính quy trong truy vấn MongoDB?
Nikita Duggal

Nikita Duggal là một nhà tiếp thị kỹ thuật số đầy nhiệt huyết với chuyên ngành ngôn ngữ và văn học Anh, một người sành sỏi về ngôn từ, thích viết về các công nghệ đang thịnh hành, tiếp thị kỹ thuật số và những câu hỏi hóc búa về nghề nghiệp

Tôi có thể sử dụng regex trong truy vấn MongoDB không?

MongoDB cung cấp chức năng tìm kiếm một mẫu trong chuỗi trong khi truy vấn bằng cách viết một biểu thức chính quy . Biểu thức chính quy là một cách tổng quát để khớp các mẫu với chuỗi ký tự. MongoDB sử dụng biểu thức chính quy tương thích với Perl (PCRE) phiên bản 8. 42 cùng với hỗ trợ UTF-8.

Làm cách nào để sử dụng câu lệnh SQL LIKE trong MongoDB?

Trường hợp sử dụng 1. Chứa một chuỗi. Câu lệnh SQL với toán tử like như sau. chọn * từ bảng có tên như '%jo%';.
Ca sử dụng 2. Bắt đầu với một chuỗi. Câu lệnh SQL với toán tử like như sau. chọn * từ bảng có tên như 'jo%';.
Ca sử dụng 3. Kết thúc bằng một chuỗi

Làm cách nào để tìm kiếm các ký tự đặc biệt trong MongoDB?

Để khớp một ký tự đặc biệt, đặt dấu gạch chéo ngược lên trước ký tự đó , như thế này \*.

() trong biểu thức chính quy là gì?

Các () sẽ cho phép bạn đọc chính xác các ký tự được khớp . Dấu ngoặc đơn cũng hữu ích cho OR'ing hai biểu thức với thanh. nhân vật. Ví dụ: (a-z. 0-9) sẽ khớp với một ký tự -- bất kỳ chữ cái viết thường hoặc chữ số nào.