Я заметил, что запросы с помощью 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
Мобильная версия