MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Размито търсене с Mongodb?

Вярвам, че за да правите "размито" търсене, ще трябва да използвате регулярен израз. Това трябва да постигне това, което търсите (източник на функцията escapeRegex тук):

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 });
           }
       }); 
    }
}

Като се има предвид това, вашето приложение може да срещне проблеми с производителността при запитване на mongo чрез регулярен израз. Използването на библиотека като search-index за търсене може да помогне за оптимизиране на производителността на вашето приложение, с допълнителната полза от търсенето на думи (като връщане на „found“ от „find“).

АКТУАЛИЗАЦИЯ:Първоначалният ми отговор включваше просто редовно изражение, което би оставило приложението ви уязвимо за DDoS атака с регулярни изрази. Актуализирах с "безопасен" екраниращ регулярен израз.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose с mongodb как да върна току-що запазен обект?

  2. Как да подобрим производителността на вмъкване на MongoDB

  3. MongoDB и се присъединява

  4. Mongo натиснете към масив вътре в масива

  5. Ограничение за попълване на възел js mongoose