Автотест mongodb для проверки запроса использует индекс, используя C# - PullRequest
0 голосов
/ 29 марта 2020

Я использую mongodb и драйвер c#, я сделал несколько запросов для разных частей моего приложения. Для разных коллекций я создал соответствующие индексы для поддержки своих запросов, или, я надеюсь, что это так.

Я хочу проверить поведение своих запросов, чтобы убедиться, что запросы действительно используют индексы. Для этого я думаю создать автоматические тесты, которые могут выполнять объяснение запросов и затем проверять используемые стратегии.

Однако мне очень трудно понять, как это сделать с C# Водитель. Пример моих запросов выглядит следующим образом:

IMongoCollection<UserData> collection = ...

FilterDefinition<UserData> filter = Builders<UserData>.Filter.In(x => x.Email, emails);
ProjectionDefinition<UserData> projection = Builders<UserData>.Projection
   .Include(x => x.UserId)
   .Include(x => x.Email);

FindOptions<UserData> options = new FindOptions<UserData> { Projection = projection };
IAsyncCursor<UserData> findCursor = await collection.FindAsync(filter, options);

Из документации c# драйвера, Я нашел это (MongoCursor.Explain), и это то, на что я надеялся , Тем не менее, я понятия не имею, как я получаю MongoCursor. Я также нашел здесь класс ExplainOperation , но, похоже, я не могу найти ни одного примера его использования.

В настоящее время у меня работает следующее:

FindOptions findOptions = new FindOptions { Modifiers = new BsonDocument("$explain", true) };
BsonDocument document = collection.Find(filter, findOptions).Project(projection).First();

Тем не менее, поле Modifiers устарело, что говорит мне: «Вместо этого используйте отдельные свойства.», Но я не могу найти какие-либо свойства объяснения где-либо.

Итак что я мог / должен сделать? Причина, по которой это делается как автоматическое тестирование, заключается в том, что я хочу защититься от изменений в индексах или запросах без необходимости вручную проверять его в оболочке mon go, но это необоснованная или плохая практика для проверки использование индексов с помощью автотестов? Какие есть альтернативы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...