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

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

Сообщение 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#»