2016-09-30 5 views
0

У меня есть родительский документ со ссылками. Вопрос в том, нормально ли удалять все ссылочные документы и вставлять новые, вместо этого обновлять старые, вставлять новые и удалять удаленные документы? В SQL это не очень хорошая практика, потому что индекс становится фрагментированным.Заменить вместо обновления

+0

Вы хотите обновить весь документ или просто некоторые атрибуты? –

+0

Ну, представьте себе, у меня есть счет с ссылочными продуктами. Когда кто-то редактирует счет и сохраняет его, я не хочу проверять, какие продукты удаляются, ведьма из них обновлена ​​/ вставлена. Я просто хочу удалить все старые продукты и разместить там новые. –

ответ

0

Когда вы начинаете вставлять документы в MongoDB, он помещает каждый документ рядом с предыдущим на диске. Таким образом, если документ становится больше, он больше не будет вписываться в пространстве был первоначально записан и будет перемещен в другую часть коллекции

я считаю, его лучше удалить и вставить упаковываю мы не уверен в размере, иначе, если размер обновления больше, мы можем столкнуться с проблемами производительности в случае переезда.

Если я не ошибаюсь, что вы пытаетесь достичь, это поведение замены документа, я полагаю, вы можете использовать db.collection.findAndModify(), он имеет обновление и удалить поле, которое может помочь вам достичь желаемого поведение.