Выполняет ли mongodb переиндексацию, если вы меняете поле, которое используется в индексе?

Допустим, у вас есть коллекция с полем с именем «primary_key», {«primary_key»: «1234», «name»: «jimmy», «lastname»: «page»}.

и у меня есть индекс «primary_key».

В этой коллекции миллионы строк, я хочу посмотреть, насколько дорого обходится изменение primary_key для одной из записей. Запускает ли он переиндексацию всей таблицы? или он просто переиндексирует измененную запись? в любом случае это дорого сделать?


person mike    schedule 04.05.2014    source источник


Ответы (1)


Обновление индексированного поля в mongodb вызывает обновление индекса (или индексов, если у вас их несколько), которые его используют. Он не "переиндексирует". Не должно быть все так дорого - фактически вы удалите старую запись и вставите новую.

Этот документ содержит достаточно подробностей об индексах mongodb:

http://docs.mongodb.org/master/MongoDB-indexes-guide.pdf

Кстати, имейте в виду, что есть одно специальное поле, _id, которое mongodb использует в качестве первичного ключа.

_id Поле, обязательное для каждого документа MongoDB. Поле _id должно иметь уникальное значение. Вы можете думать о поле _id как о первичном ключе документа. Если вы создаете новый документ без поля _id, MongoDB автоматически создает поле и назначает уникальный идентификатор объекта BSON.

Вы не можете обновить поле _id.

person John Petrone    schedule 04.05.2014
comment
Спасибо за ответ. Ссылка также была хорошей, я знаю, что весь документ связан с индексом, но было бы здорово, если бы вы могли указать, какой раздел более важен для вопроса. - person mike; 07.05.2014
comment
я опоздал с этим ответом, и приведенная выше ссылка не работает с 2020 года, ссылку на соответствующие документы можно получить через: docs.mongodb.com/manual/applications/indexes - person ioojimooi; 09.04.2020