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のようなライブラリを検索に使用すると、語幹を検索するという追加の利点(「find」から「found」を返すなど)とともに、アプリケーションのパフォーマンスを最適化するのに役立ちます。

    更新:私の元の答えには、アプリケーションを正規表現DDoS攻撃に対して脆弱なままにする単純な定期的な表現が含まれていました。 「安全な」エスケープされた正規表現で更新しました。



    1. javascriptでISO日付オブジェクトを作成します

    2. 6つの最高のMapReduceジョブ最適化手法

    3. 既存のgridfsファイルにデータを追加します

    4. MongoDBを使用してサブドキュメント内の配列をフィルタリングする方法