Я создаю агрегат с помощью драйвера C# mongodb, который находит документы в первой коллекции, а затем находит документы из второй коллекции, связанные с документами первой коллекции. Моя проблема в том, что он, похоже, не использует созданные индексы для оптимизации запроса.
Я пытался использовать атрибут Hint в AggregateOptions, чтобы заставить его используйте индексы Serial и CreatedDate, хотя, похоже, они их не используют. Я также создал индекс, имеющий оба атрибута Serial_CreatedDate. Есть ли другой способ заставить запрос использовать индексы? Если нет, могу ли я что-нибудь сделать, чтобы оптимизировать этот запрос?
Вот фрагмент кода, связанный с моей проблемой:
var toDateFilter = Builders.Filter.Lte(ClassExtension.GetPropertyName(x => x.CreatedDate), to);
var serialFilter = Builders.Filter.Eq(ClassExtension.GetPropertyName(x => x.Serial), args.Serial);
var combinedFilter = Builders.Filter.And(serialFilter, fromDateFilter, toDateFilter);
// Lookup stage : Lookup with projection for FilesLog
string filesLogColName = "filesLog";
AggregateOptions aggOptions = new AggregateOptions();
aggOptions.Hint = new BsonDocument { { "Serial", 1 }, { "CreatedDate", 1 } };
var cursor = MessageLogDB.Table.Aggregate(aggOptions)
.Match(combinedFilter)
.Lookup(
_fileTableLog,
ClassExtension.GetPropertyName(x => x.MessageID),
ClassExtension.GetPropertyName(x => x.MessageID),
filesLogColName
).ToCursorAsync().Result;
Подробнее здесь: https://stackoverflow.com/questions/787 ... ed-indexes
Драйвер Mongodb C#: агрегат не использует созданные индексы ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить список коллекции {Mongodb} в php, используя новый драйвер MongoDB\Driver\Manager
Anonymous » » в форуме Php - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-