MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB c# драйвер:Без значение за малки и големи букви Сравнете с помощта на in или съдържа в списък с помощта на linq

В крайна сметка намерих решение на този проблем, след много ровене открих, че toLower() методите не са внедрени в доставчика на mongoDb linq, така че трябваше да премина към използване на 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.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data REST:персонализирана заявка за MongoDB хранилище

  2. Как да проектирам дали полето съществува

  3. Запитването на Mongo отнема много време. Как да стане по-бързо?

  4. Клониране на база данни в Mongodb между хостове с помощта на драйвер на възел

  5. Какъв е C# еквивалентът на push и root за MongoDB?