sql >> Database >  >> NoSQL >> MongoDB

Fuzzy Zoeken met Mongodb?

Ik geloof dat je regex moet gebruiken om "fuzzy" te zoeken. Dit zou moeten volbrengen wat u zoekt (escapeRegex-functiebron hier):

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

Dat gezegd hebbende, kan uw toepassing prestatieproblemen ondervinden bij het opvragen van mongo per regex. Het gebruik van een bibliotheek zoals zoekindex voor zoeken kan helpen de prestaties van uw toepassing te optimaliseren, met het extra voordeel van het zoeken naar woordstammen (zoals het retourneren van "gevonden" van "vinden").

UPDATE:Mijn oorspronkelijke antwoord omvatte een eenvoudige reguliere expressie die uw applicatie kwetsbaar zou maken voor een reguliere DDoS-aanval. Ik heb geüpdatet met een "veilige" ontsnapte regex.



  1. Moet Redigo Redis Pool echt een globale variabele zijn?

  2. Vertaal Queryable<T> terug naar IMongoQuery

  3. MongoDB NOW Aggregatievariabele

  4. Een subdocument bijwerken dat is opgenomen in een array in een MongoDB-document