Индексация ИЛИ И запросов MongoDB
У меня есть таблица запросов в моей базе данных, которая состоит из нескольких полей, таких как "в ожидании", чтобы обозначить, если запрос не был обработан, "истечение", чтобы отслеживать время истечения в миллисекундах (Epoch), "количество", которое отсчитывает до 0 каждый раз, когда запрос запущен.
Теперь я выполняю поиск всех запросов, для которых истек срок действия запроса ИЛИ счетчик упал до 0 И ожидание равно true. Я тогда заказываю результаты, основанные на времени истечения.
Я пытался создать индекс для этого, но, основываясь на результатах моей команды объяснения (), я уверен, что MongoDB не использует индекс. Любые предложения о том, каким должен быть составной индекс для такого запроса?
Чтобы выразить это в общих терминах, запрос по существу (A ИЛИ B) И C упорядочен по C
Это запрос, который я построил через Morphia, Java (я новичок в MongoDB) ->
query.and(query.criteria("pending").equal(true));
query.or(query.criteria("count").equal(0), query.criteria("expiry").lessThan(System.currentTimeMillis()));
query.order("expiry");
1 ответ
Хорошо, теперь работает нормально. На всякий случай, если кто-то хочет знать, как это работает, это довольно тривиально. Просто создал индекс для всех трех полей в том порядке, в котором они у меня есть в запросе, и команда объяснения (), похоже, использует индекс.:)