Драйвер Mongo С# всегда использует глобальный флаг для регулярного выраженияC#

Место общения программистов C#
Ответить
Anonymous
 Драйвер Mongo С# всегда использует глобальный флаг для регулярного выражения

Сообщение Anonymous »

У меня есть общая функция, позволяющая всегда запрашивать мою коллекцию mongo с ограничением и получать весь результат в одном пакете.
Я заметил, что запросы с помощью 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»