sql >> データベース >  >> NoSQL >> MongoDB

mongodbの$in演算子で正規表現を使用できません

    配列内の要素を RegExp オブジェクト、つまり

    regex =[new RegExp( "sai"、 "i")、new RegExp( "test"、 "i")、...]

    map() RegExpラッパーを使用して配列内の要素を新しい配列にマップするメソッド。この配列は、 $ in

    var x = ["sai","test","jacob","justin"],
        regex = x.map(function (e) { return new RegExp(e, "i"); });
    
    db.users.find({"profile.firstName": { "$in": regex } });
    

    $ inを使用する 小さな配列ではかなり効率的ですが、巨大なリストでは、一致するドキュメントを見つけるためにインデックスをスキップしたり、使用するインデックスがない場合はコレクション全体をウォークスルーしたりするため、あまり効率的ではありません。

    正規表現で$inを使用する 、次のようなキーワードリストでパイプ区切りの正規表現パターンを使用できます:

    var x = ["sai","test","jacob","justin"],
        regex = x.join("|");
    
    db.users.find({
        "profile.firstName": {
            "$regex": regex, 
            "$options": "i"
        } 
    }).count;
    


    1. mongodbで複数の配列オブジェクトを更新する方法

    2. エクスプレスパラメータルートにfindOneメソッドを使用しているのに、なぜfavicon.icoを取得するのですか?

    3. MongoDbで許可される埋め込みドキュメントの最大深度はどれくらいですか?

    4. SpringBootを使用してMongoDBクエリをログに記録する