sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB c#-driver:Ufølsom mellem store og små bogstaver Sammenlign ved hjælp af i eller indeholder på en liste ved hjælp af linq

Jeg fandt til sidst en løsning på dette problem, efter en masse gravearbejde fandt jeg ud af, at toLower() metoder er ikke implementeret i mongoDb linq-udbyderen, så jeg var nødt til at skifte til at bruge MongoQuery

Jeg oprettede nogle udvidelsesmetoder til streng og liste, hvor den tager strengen eller listen som en kilde og konverterer den til et regulært bson-udtryk

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

og så bruges de sådan her...

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


  1. Sådan sorteres data i Mongo i en brugerdefineret rækkefølge

  2. Django sessioner

  3. Mongodb, linq driver. Sådan konstrueres Indeholder med variabel eller udsagn

  4. Hvordan håndterer MongoDB samtidige opdateringer?