MongoDB
 sql >> डेटाबेस >  >> NoSQL >> 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 });
           }
       }); 
    }
}

ऐसा कहा जा रहा है कि रेगेक्स द्वारा मोंगो से पूछताछ करते समय आपका एप्लिकेशन प्रदर्शन समस्याओं का अनुभव कर सकता है। खोज के लिए खोज-सूचकांक जैसी लाइब्रेरी का उपयोग करने से आपके एप्लिकेशन के प्रदर्शन को अनुकूलित करने में मदद मिल सकती है, साथ ही खोज शब्द के अतिरिक्त लाभ (जैसे "ढूंढें" से "मिला" वापस आना) के साथ।

अद्यतन:मेरे मूल उत्तर में एक साधारण नियमित अभिव्यक्ति शामिल थी जो आपके आवेदन को रेगेक्स डीडीओएस हमले के लिए कमजोर छोड़ देगी। मैंने एक "सुरक्षित" एस्केप्ड रेगेक्स के साथ अपडेट किया है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Model.find () नेवला में खाली लौटाता है

  2. MongoDB असुरक्षा के स्तर और उनसे कैसे बचें

  3. MongoDB में एक इंडेक्स बनाने के 3 तरीके

  4. मोंगोडब में क्वेरी कैसे शामिल करें?

  5. पिछले n दिनों के भीतर सभी दस्तावेज़ खोजें