MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tìm kiếm mờ với Mongodb?

Tôi tin rằng để thực hiện tìm kiếm "mờ", bạn sẽ cần sử dụng regex. Điều này sẽ hoàn thành những gì bạn đang tìm kiếm (nguồn hàm EscapeRegex tại đây):

function escapeRegex(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};

router.get("/", function(req, res) {
    if (req.query.search) {
       const regex = new RegExp(escapeRegex(req.query.search), 'gi');
       Jobs.find({ "name": regex }, function(err, foundjobs) {
           if(err) {
               console.log(err);
           } else {
              res.render("jobs/index", { jobs: foundjobs });
           }
       }); 
    }
}

Điều đó đang được nói, ứng dụng của bạn có thể gặp vấn đề về hiệu suất khi truy vấn mongo bằng regex. Sử dụng thư viện như chỉ mục tìm kiếm để tìm kiếm có thể giúp tối ưu hóa hiệu suất ứng dụng của bạn, với lợi ích bổ sung của việc tìm kiếm các gốc từ (như trả về "tìm thấy" từ "tìm").

CẬP NHẬT:Câu trả lời ban đầu của tôi bao gồm một biểu thức thông thường đơn giản có thể khiến ứng dụng của bạn dễ bị tấn công DDoS regex. Tôi đã cập nhật một regex thoát "an toàn".



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao MongoDB không sử dụng giao điểm chỉ mục?

  2. Không thể khởi động MongoDB dưới dạng dịch vụ

  3. Làm cách nào để cập nhật các trường tài liệu trong mongo db bằng trình điều khiển java?

  4. Cách tìm kiếm trong mảng đối tượng trong mongodb

  5. Khắc phục sự cố với Cụm phân mảnh MongoDB