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

MongoDB c#ドライバー:大文字と小文字を区別しないlinqを使用してリストにinまたはcontainsを使用して比較

    私は最終的にこの問題の解決策を見つけました。多くの調査の結果、toLower() メソッドはmongoDblinqプロバイダーに実装されていないため、MongoQueryの使用に変更する必要がありました

    文字列またはリストをソースとして受け取り、それをbson正規表現に変換する文字列とリストの拡張メソッドをいくつか作成しました

    internal static List<BsonValue> ConvertToCaseInsensitiveRegexList(this IEnumerable<string> source)
    {
        return source.Select(range => new BsonRegularExpression("/^" + range.Replace("+", @"\+") + "$/i")).Cast<BsonValue>().ToList();
    }
    
    internal static List<BsonValue> ConvertToEndsWithRegexList(this IEnumerable<string> source)
    {
        return source.Select(range => new BsonRegularExpression("/" + range.Replace("+", @"\+") + "$/i")).Cast<BsonValue>().ToList();
    }
    
    internal static BsonRegularExpression ToCaseInsensitiveRegex(this string source)
    {
        return new BsonRegularExpression("/^" + source.Replace("+", @"\+") + "$/i");
    }
    

    そして、それらはこのように使用されます...

    var colours = new List<string> { "Red", "blue", "white" };
    var query = Query<myObject>.In(v => v.Colour, colours.ConvertToCaseInsensitiveRegexList());
    this.Find(query).ToList();
    


    1. Redisのパスワードを設定するにはどうすればよいですか?

    2. Spring DataでJedisを使用しているときに、Redisでデータが奇妙なキーで保存されるのはなぜですか?

    3. $ Projectを使用して既存の文字列から新しいフィールドを作成するにはどうすればよいですか?

    4. node.jsモジュールで非同期にエクスポートを初期化しても大丈夫ですか?