MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyszukiwanie rozmyte w Mongodb?

Uważam, że aby przeprowadzić wyszukiwanie „rozmyte”, musisz użyć wyrażenia regularnego. Powinno to osiągnąć to, czego szukasz (źródło funkcji escapeRegex tutaj):

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

Biorąc to pod uwagę, Twoja aplikacja może napotkać problemy z wydajnością podczas wykonywania zapytań o mongo przez wyrażenie regularne. Korzystanie z biblioteki takiej jak search-index do wyszukiwania może pomóc zoptymalizować wydajność aplikacji, z dodatkową korzyścią wynikającą z wyszukiwania rdzeni słów (takich jak zwracanie „znaleziono” z „znajdź”).

AKTUALIZACJA:Moja pierwotna odpowiedź zawierała proste regularne wyrażenie, które narażałoby Twoją aplikację na atak DDoS z wyrażeniami regularnymi. Zaktualizowałem „bezpieczne” wyrażenie regularne ze zmianą znaczenia.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Najlepszy sposób na przechowywanie daty/godziny w mongodb

  2. Bezpieczeństwo bazy danych 101:Zrozumienie uprawnień dostępu do bazy danych

  3. Użyj „MongoMappingContext#setAutoIndexCreation(boolean)” lub zastąp „MongoConfigurationSupport#autoIndexCreation()”, aby być jawnym

  4. Mongodb - Nieprawidłowy znak błędu Mongoimport

  5. Określ wiele kryteriów dla elementów tablicy