Я заметил, что запросы с помощью contains и StartWith выполнялись дольше, чем ожидалось. Я знаю, что такие запросы занимают намного больше времени, чем запросы равенства, но я уже привык их использовать, поэтому я знаю, что они не должны занимать так много времени.
В ходе исследования я обнаружил, что каждый раз, когда я использую функцию contains или StartWith в выражении, драйвер (версия 2.29) использует глобальный флаг, который, как я считаю, является причиной.
Поэтому, когда я вызываю функцию
Код: Выделить всё
GetMany(collection,t => t.SomeStringField.StartWith("TEST"))
SomeStringField : /^TEST/g
Разве это не должно быть /^TEST/? Без g?
Код: Выделить всё
public async Task GetMany(IMongoCollection collection, Expression predicate, int limit = 180) where T : class
{
AggregateOptions options = new AggregateOptions() { BatchSize = limit};
return await collection.AsQueryable(options).Where(predicate).Take(limit).ToListAsync();
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -for-regex
Мобильная версия