#mongodb #time-complexity #big-o #mongo-collection #mongodb-lookup
#mongodb #сложность по времени #big-o #монго-коллекция #mongodb-поиск
Вопрос:
В чем сложность операции поиска MongoDB?
Допустим, у меня есть n записей в моей коллекции MongoDB ‘A’
и n записей в коллекции ‘B’, каждый документ B имеет внешний _id A и один конкретный тег, например "preOrder","directOrder", "pendingOrder" ...
случай 1:
если я добавлю запрос соответствия в коллекцию ‘A’ с некоторыми фильтрами и добавлю поиск с коллекцией B.
и я получил в результате массив объектов данных B, и я перебираю каждый массив каждого объекта, чтобы выполнить некоторую операцию и подсчитать количество каждого тега
случай 2:
Добавьте запрос соответствия в коллекцию ‘A’ с
циклом фильтрации по каждому результату и запросом в цикле для записи соответствия B.
Какова будет разница во времени и нагрузке на сервер mongo?
Ответ №1:
Ваш вопрос зависит от того, можно ли использовать индекс для критериев запроса вашей находки или нет. Если можно использовать индекс, это также зависит от типа индекса:
Если индекс не может быть использован, вы можете сделать ставку на O (n).
В большинстве случаев индексы представляют собой b-деревья, и в этом случае вы можете ожидать O (log n).
В особом случае, когда можно использовать хэш-индекс, и при условии, что ваш запрос ищет точное значение, оно может быть O (1) .
Вы можете использовать abc.explain() для анализа плана выполнения запроса (COLLSCAN O (1) против индекса IXSCAN, определенного для типа big-O).