Số regex MongoDB

Sau MongoDB Capped Collection, hôm nay chúng ta sẽ xem một khái niệm mới MongoDB Regular Expression để gia công mẫu

Ở đây, chúng ta sẽ thấy các toán tử tùy chọn và biểu thức chính MongoDB với các ví dụ. Cùng với điều này, chúng ta sẽ tìm hiểu cách sử dụng regex trong phần tử mảng trong MongoDB và tối ưu hóa truy vấn

Biểu thức chính quy MongoDB là gì?

Biểu thức chính quy MongoDB được sử dụng để khớp các mẫu khác nhau. Điều này hữu ích cho việc tìm chuỗi trong tài liệu

Đôi khi, có thể xảy ra trường hợp bạn không biết mình nên tìm kiếm giá trị trường nào trong tài liệu cho một bộ sưu tập cụ thể. Do đó, chúng ta có thể sử dụng biểu thức chính quy trong MongoDB để tìm ra một số đối sánh duy nhất cho bất kỳ tài liệu nào

i. MongoDB $regex

Toán tử regex MongoDB được sử dụng để tìm kiếm các chuỗi trong bộ sưu tập. Bây giờ chúng ta sẽ lấy một ví dụ để hiểu về toán tử regex

Chúng ta sẽ lấy một bảng ví dụ với hai trường là “Employee_id” và “Employee_name”

Probessee_idemployee_name 20 ABC 12 def 3 GHI 2 JKL 89 MNO 7 PQR

Bây giờ chúng ta sẽ viết code tìm “Employee_name” có viết tắt là “ab”

db.Employee.find({Employee_name : {$regex: "ab" }}).forEach(printjson)

Ở đây, printjson được sử dụng để in từng tài liệu được truy vấn trả về theo cách tốt hơn

Nếu giả sử bộ sưu tập của bạn có tài liệu với tên_nhân viên là “abc123”. Nếu bạn đã nhập tiêu chí tìm kiếm là “abc12”, nó cũng sẽ trả về tất cả các tài liệu có tên là “abc123”. Vì vậy, nếu bạn chỉ muốn thực hiện một truy vấn để tìm kiếm “abc12” thì chúng ta phải sử dụng khớp mẫu chính xác

Để thực hiện khớp mẫu chính xác, chúng tôi sử dụng ký tự ^ và $. Chúng ta sẽ thêm ký tự ^ vào đầu và ký tự $ vào cuối chuỗi

Tên_nhân_viênEmployee_name               20             abc             12                 def                                                                                                                                                                                                                                                                                                                                                                                                                                                                      . .

Ở đây ^ được sử dụng để biểu thị rằng một chuỗi bắt đầu bằng một ký tự nhất định và $ được sử dụng để đảm bảo rằng một chuỗi kết thúc bằng một ký tự nhất định

ii. Tùy chọn $ MongoDB

Khi bạn muốn cung cấp một số tùy chọn bổ sung trong toán tử regex thì bạn sẽ sử dụng từ khóa $options. Giả sử bạn muốn tìm kiếm tất cả các tài liệu có “ab” trong Tên_nhân viên của chúng, bất kể nó phân biệt chữ hoa chữ thường hay không phân biệt chữ hoa chữ thường

Để tìm kiếm kết quả mà không xem xét phân biệt chữ hoa chữ thường, chúng tôi sử dụng $options

Đối với điều này, chúng tôi sẽ xem xét các tài liệu sau trong bộ sưu tập của chúng tôi

Người làm việc_idemployee_name 20 ABC 12 DEF 3 ABC12 2 ABC123 89 MNO 7 ABC12 6 ABC12________2___

Ở đây $options với tham số 'i' chỉ định rằng chúng tôi muốn thực hiện tìm kiếm mà không cần xem xét chữ hoa hay chữ thường. Điều tương tự cũng sẽ xảy ra với ví dụ của chúng tôi, trong đó “ab” sẽ được tìm kiếm cho dù đó là chữ hoa hay chữ thường

Chúng tôi cũng có thể thực hiện khớp mẫu mà không cần sử dụng toán tử regex MongoDB. Ví dụ dưới đây sẽ cho chúng ta biết làm thế nào để làm điều này

db.Employee.find({Employee_name: /ab/'}).forEach(printjson)

Ở đây “//” chỉ định rằng tiêu chí tìm kiếm của chúng tôi nằm trong các dấu phân cách này

Tìm nạp tài liệu 'n' cuối cùng từ bộ sưu tập

Có nhiều cách khác nhau để lấy n tài liệu cuối cùng từ một bộ sưu tập

Hãy xem ví dụ để hiểu một cách lấy n tài liệu cuối cùng trong một bộ sưu tập

Tên_nhân_viênEmployee_name               20             abc             12                 def                                                                                                                                                                                                                                                                                                                                                            

Ở đây giới hạn được sử dụng để hiển thị số lượng bản ghi bạn muốn. Ở đây nó đặt là 2 nên nó sẽ tìm kiếm 2 tài liệu cuối cùng. Và -1 được sử dụng để sắp xếp tài liệu theo thứ tự giảm dần

Làm cách nào để sử dụng regex cho phần tử mảng trong MongoDB?

Chúng ta cũng có thể sử dụng biểu thức chính quy MongoDB trong các trường mảng. Khi chúng tôi triển khai chức năng của các thẻ thì điều quan trọng là phải bắt đầu từ từ MongoDB để tìm kiếm tất cả các bài đăng có thẻ này. Bây giờ chúng ta sẽ xem mã cho câu lệnh trên

> db.example.find({tags:{$regex:"Mongo"}}).pretty();
{
     "_id" : ObjectId("590e5b7bd774a89bd3a0c5fb"),
     "blog_text" : "MongoDB uses regular expression",
     "tags" : [
           "MongoDB",
           "regular",
           "expression"
     ]
}
> db.example.find({tags:{$regex:"MongoDB"}}).pretty();
{
     "_id" : ObjectId("590e5b7bd774a89bd3a0c5fb"),
     "blog_text" : "MongoDB uses regular expression",
     "tags" : [
           "MongoDB",
           "regular",
           "expression"
     ]
}
>

Tối ưu hóa truy vấn MongoDB

Chúng tôi có thể tối ưu hóa các truy vấn biểu thức chính quy MongoDB giống như chúng tôi làm trong cơ sở dữ liệu quan hệ. Sau đây là một số khái niệm được sử dụng trong MongoDB để tối ưu hóa truy vấn

  1. Chúng ta có thể tạo các chỉ mục cơ sở dữ liệu trên các trường tài liệu để truy vấn MongoDB sẽ sử dụng các giá trị được lập chỉ mục này để khớp với biểu thức chính quy. Điều này làm cho việc tìm kiếm và truy xuất dữ liệu từ bộ sưu tập rất nhanh so với quét biểu thức chính quy truyền thống
  2. Tạo một truy vấn với biểu thức chính quy dưới dạng biểu thức tiền tố trong đó tất cả các kết quả phù hợp có nghĩa là bắt đầu bằng một ký tự chuỗi cụ thể

ví dụ. nếu biểu thức chính quy là ^example, thì truy vấn như vậy sẽ chỉ tìm kiếm những chuỗi bắt đầu bằng ví dụ

Tóm lược

Do đó, chúng tôi đã nghiên cứu về các biểu thức chính quy MongoDB để khớp mẫu với $regex và $option. Cùng với điều này, chúng tôi đã học cách sử dụng regex để tối ưu hóa phần tử mảng và truy vấn

Làm cách nào để sử dụng regex với MongoDB?

Nếu bạn muốn 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, thì bạn phải sử dụng toán tử $regex. If you want to use x and s options then you have to use $regex operator expression with $options. Starting from the latest version of MongoDB(i.e., 4.0.

Làm cách nào để tìm số cụ thể trong MongoDB?

Để tìm số lượng bản ghi cụ thể, hãy sử dụng LIMIT() trong MongoDB . Phương thức chấp nhận một đối số kiểu số, là số lượng tài liệu mà bạn muốn hiển thị.

Regex có sử dụng chỉ mục MongoDB không?

MongoDB hỗ trợ các biểu thức chính quy sử dụng toán tử $regex. Tuy nhiên, các truy vấn regex MongoDB này có nhược điểm, tất cả trừ một loại regex khiến việc sử dụng các chỉ mục kém và dẫn đến các vấn đề về hiệu suất.

Toán tử regex trong MongoDB dùng để làm gì?

Toán tử biểu thức chính MongoDB được sử dụng để tìm kiếm các chuỗi trong bộ sưu tập .