Trình kiểm tra regex MongoDB

Công cụ miễn phí xác thực chuỗi đầu vào đã cho theo biểu thức chính quy đã cho và khớp với đầu ra theo Regex đã xác định

Công cụ hỗ trợ phân tích cú pháp và gỡ lỗi bằng ngôn ngữ Javascript, Python và PHP

Biểu thức chính quy (biểu thức chính quy, biểu thức chính quy hoặc biểu thức hợp lý) là một chuỗi các ký tự chỉ định mẫu tìm kiếm. Thông thường các mẫu này được sử dụng bởi các thuật toán tìm kiếm chuỗi để tìm hoặc tìm và thay thế các hoạt động trên chuỗi hoặc để xác thực đầu vào

Khi bạn truy vấn các trường văn bản, không có công cụ nào mạnh hơn biểu thức chính quy. Mặc dù chúng có thể cực kỳ phức tạp, nhưng chúng có sức mạnh và siêu linh hoạt không thể tin được. Nếu bạn cần tạo các truy vấn văn bản phức tạp không chỉ khớp chính xác thì có thể bạn sẽ muốn xem xét các biểu thức chính quy. Trong bài viết này, chúng ta sẽ xem xét cú pháp cơ bản của một truy vấn trong MongoDB bằng cách sử dụng các biểu thức chính quy

Ghi chú. Có rất nhiều chi tiết cú pháp cho các biểu thức chính quy, vì vậy chúng tôi sẽ không đi sâu vào vấn đề đó nhưng chúng tôi hy vọng cung cấp cho bạn đủ ví dụ và tài nguyên để giúp bạn đi đúng hướng để tạo truy vấn mà bạn cần

điều kiện tiên quyết

  • Bạn nên cài đặt và chạy MongoDB
    • Bạn có thể thực hiện việc này bằng lệnh mongod
  • Bạn nên có quyền truy cập vào dòng lệnh MongoDB
    • Bạn có thể truy cập vào dòng lệnh bằng cách thực thi lệnh mongo trong khi MongoDB đang chạy
  • Mặc dù không bắt buộc nhưng việc tìm hiểu cú pháp biểu thức chính quy sẽ rất hữu ích vì nó có thể đáng sợ nếu bạn không có kiến ​​thức cơ bản tại chỗ

Lệnh find() cho phép chúng tôi truy vấn các tài liệu từ MongoDB và chúng tôi sẽ thêm biểu thức chính quy của mình vào lệnh này để chỉ truy vấn các tài liệu cụ thể trong cơ sở dữ liệu của chúng tôi

Hãy xem một ví dụ cơ bản để chúng ta có thể kiểm tra cách sử dụng cơ bản trước khi đi sâu vào các ví dụ và chi tiết hơn. Nhớ chọn cơ sở dữ liệu bằng lệnh use

ví dụ 1. Truy vấn tài liệu trong bộ sưu tập products trong cơ sở dữ liệu hiện tại với tên “Cola”

db. Mỹ phẩm. tìm ({"tên". /Cola/ })

Như bạn có thể thấy, chúng tôi sử dụng lệnh find() như thường lệ để truy vấn name. Lần này mặc dù chúng tôi yêu cầu trường name khớp với biểu thức chính quy của chúng tôi. Chúng tôi không cần đưa ra bất kỳ dấu hiệu nào khác cho thấy đó là tìm kiếm biểu thức chính quy ngoài việc sử dụng cú pháp biểu thức chính quy trong truy vấn

cú pháp

Ở đây, biểu thức chính quy bắt đầu và kết thúc bằng dấu gạch chéo lên. Mặc dù có thể có các cờ tùy chọn được thêm vào biểu thức. Ví dụ: nếu bạn muốn tìm kiếm “Cola” không phân biệt chữ hoa chữ thường, bạn có thể thêm cờ i vào biểu thức như thế này

db. Mỹ phẩm. tìm ({"tên". /Cola/i })

Điều này sẽ phù hợp với cả Colamongo0

Nhắc nhở Regex ngắn

Như một lời nhắc ngắn gọn, chúng ta hãy xem xét một số khái niệm cơ bản về kết hợp trong Regex

  • Khớp với bất kỳ ký tự nào ngoại trừ dòng mới
  • a So khớp với ký tự mongo1
  • abc So khớp với chuỗi ký tự mongo2
  • a. b Đây là toán tử OR. Nó sẽ khớp với mongo1 hoặc mongo4
  • a* Điều này sẽ khớp với 0 hoặc nhiều hơn của mongo1
  • Sử dụng dấu gạch chéo ngược mongo6 để thoát các ký tự đặc biệt
  • d So khớp với một chữ số
  • D So khớp với một chữ số duy nhất
  • s So khớp với một khoảng trắng
  • S So khớp với một khoảng trắng duy nhất

Chúng ta cũng hãy xem một số cờ bạn có thể sử dụng trong Regex của mình

  • i Cờ phân biệt chữ hoa chữ thường
  • m ^ và $ khớp với đầu và cuối dòng
  • s Cho phép mongo7 khớp với dòng mới
  • x Cho phép khoảng trắng và nhận xét

Đây là hai khẳng định chúng tôi thấy rất phổ biến

  • ^ Mẫu phải khớp ở đầu chuỗi
  • $ Mẫu phải khớp ở cuối chuỗi

Một cách khác để viết Regex trong MongoDB

Có một cách thứ hai để viết các truy vấn này mà chúng tôi sẽ trình bày cạnh nhau để bạn có thể thấy sự khác biệt

db. Mỹ phẩm. tìm ({"tên". /Cola/i })

Truy vấn này từ trước đó cũng có thể được viết là

db. Mỹ phẩm. tìm ({"tên". { $regex. "Cola", tùy chọn $. "$i" }})

Vì vậy, nếu cú ​​pháp có dấu gạch chéo lên làm bạn bối rối hoặc bạn không thể nhớ đó là dấu gạch chéo xuôi hay dấu gạch chéo ngược, thì chúng tôi thấy cú pháp này rõ ràng hơn

Thí dụ

Hãy nối văn bản với mẫu “File01”, “File02”, “File99”. Chúng tôi đang tìm kiếm từ "Tệp" theo sau là hai số nguyên. mongo8 là cú pháp biểu thức chính quy để khớp với bất kỳ chữ số nào

db. Mỹ phẩm. tìm ({"tên". /Tệp_\d\d/ })

Hoặc với cú pháp thay thế

db. Mỹ phẩm. tìm ({"tên". { $regex. "Tệp_\d\d" })

Tài nguyên

Nếu bạn đang cố khớp một mẫu thường được sử dụng như email hoặc tên miền, chúng tôi khuyên bạn nên nghiên cứu mẫu đó trước khi thử tự viết vì đây là những mẫu phổ biến và bạn có thể tiết kiệm thời gian bằng cách tìm một biểu thức chính quy hiện có cho mẫu đó

Chúng tôi cũng khuyên bạn nên sử dụng và trình kiểm tra biểu thức chính quy trực tuyến để kiểm tra các biểu thức chính quy của bạn nhằm đảm bảo rằng chúng chính xác trước khi bạn sử dụng chúng trên cơ sở dữ liệu của mình. Bạn không muốn chắc chắn rằng biểu thức chính quy của bạn đang nắm bắt các thuật ngữ mà bạn nghĩ trước khi bạn sử dụng nó, thực hiện bất kỳ thay đổi nào trên cơ sở dữ liệu của bạn

Phần kết luận

Trong bài viết này, chúng tôi đã chỉ cho bạn cách truy vấn tài liệu MongoDB bằng phương thức find() với biểu thức chính quy. và cung cấp cho bạn một vài ví dụ về cú pháp biểu thức chính quy. Mặc dù đây là phần nổi của tảng băng chìm liên quan đến các biểu thức chính quy, chúng tôi hy vọng điều này sẽ giúp bạn tạo truy vấn bạn cần. Nếu bạn cần bất kỳ trợ giúp nào để quản lý phiên bản MongoDB của mình, vui lòng liên hệ với chúng tôi tại Object Rocket

Làm cách nào để sử dụng regex trong 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.

Tôi có thể kiểm tra regex ở đâu?

RegExr là công cụ trực tuyến để tìm hiểu, xây dựng và kiểm tra Biểu thức chính quy (RegEx / RegExp).

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

Để tìm kiếm một chuỗi có ký tự đặc biệt trong tài liệu MongoDB, bạn có thể sử dụng \ . Ở đây, chúng tôi có ký tự đặc biệt $ trong chuỗi của chúng tôi.

Làm cách nào để sử dụng giá trị biến trong regex JavaScript?

Nếu bạn cần sử dụng biến trong biểu thức chính quy trong JavaScript, bạn phải sử dụng hàm tạo RegExp . Điều này là do biểu thức chính quy được biên dịch khi hàm tạo được gọi và biến sẽ không được thay thế nếu bạn sử dụng biểu thức chính quy bằng chữ.