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 Show
Ở đâ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 $regexToá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” 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 $ MongoDBKhi 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 MongoDBChú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
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ượcDo đó, 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 . |