2016-11-02 8 views
0

Скажем, мы хотим добавить индекс в поле коллекции mongodb zipcodepeople. Чтобы не повлиять на какие-либо операции, напишем следующую строку: db.people.createIndex({ zipcode: 1}, {background: true}). Теперь, я с трудом понимаю, что точно делает это?Как работает индексирование фона mongodb?

Это команда создания и индексации. Когда мы укажем {background: true}, означает ли это, что он будет работать в фоновом режиме только при первоначальном создании индекса (после нажатия клавиши ввода) или при каждом добавлении новой записи?

ответ

2

Создание фонового рисунка начинается сразу же (когда вы «нажимаете ввод»), но это будет сделано в фоновом режиме, и вы можете продолжить обновление коллекции, пока это делается.

Любые документы, которые вы добавляете при создании индекса, по-прежнему продолжаются, попадают в конечный индекс, но это произойдет не сразу, когда вы вставляете документ (это также происходит «в фоновом режиме», если вы это сделаете, но действительно индекс пока что не существует должным образом).

Как только индекс был полностью создан (т. Е. Обновлен с коллекцией), он работает точно так же, как и обычный индекс.

Это означает, что добавление новых документов в коллекцию также добавит их в индекс одновременно (не позже).

+0

Когда новое значение добавляется в коллекцию, начнется переиндексация, правильно? будет ли он выполняться в фоновом режиме? – nicks

+0

Нет, как только индекс будет полностью построен, любые новые документы будут проиндексированы как часть их обычного вызова «вставки». – Thilo

+1

Как можно сделать что-то вроде уникального индекса в фоновом режиме? Что делать, если дублирующийся документ вставляется при создании индекса? – rocketspacer

Смежные вопросы