Vâng, cả regex và tìm kiếm văn bản ($ text) đều giúp bạn tìm kiếm trong văn bản rất hiệu quả. Cả hai đều có ưu và nhược điểm riêng, nhưng có hai điểm phân biệt rõ ràng
regex
-
Regex không tận dụng các chỉ mục, trừ khi bạn đang tìm kiếm ở đầu chuỗi bằng cách sử dụng
^
nhà điều hành. -
Regex cho phép bạn tìm kiếm một phần văn bản. do đó. * và rất nhiều mẫu khác.
-
Regex không hỗ trợ các từ dừng hoặc nhiễu.
$ text
chỉ mục văn bản trong mongodb thực sự nhanh và nên được ưu tiên. Tuy nhiên, MongoDB không triển khai các chỉ mục văn bản đầy đủ tính năng. Một nhược điểm chính là, nó không hỗ trợ khớp từng phần. ví dụ. nếu bạn đang tìm kiếm mèo, nó sẽ chỉ tìm kiếm mèo và mèo chứ không tìm linh miêu hoặc sâu bướm.
Điểm mấu chốt là nếu bạn đang tìm cách triển khai tính năng như RDBMS
like
toán tử '$ text' sẽ không giúp được gì cho bạn (ít nhất là trong các triển khai hiện tại của MongoDB, nhưng trong tương lai nó có thể thay đổi).