У меня есть родительский документ со ссылками. Вопрос в том, нормально ли удалять все ссылочные документы и вставлять новые, вместо этого обновлять старые, вставлять новые и удалять удаленные документы? В SQL это не очень хорошая практика, потому что индекс становится фрагментированным.Заменить вместо обновления
0
A
ответ
0
Когда вы начинаете вставлять документы в MongoDB, он помещает каждый документ рядом с предыдущим на диске. Таким образом, если документ становится больше, он больше не будет вписываться в пространстве был первоначально записан и будет перемещен в другую часть коллекции
я считаю, его лучше удалить и вставить упаковываю мы не уверен в размере, иначе, если размер обновления больше, мы можем столкнуться с проблемами производительности в случае переезда.
Если я не ошибаюсь, что вы пытаетесь достичь, это поведение замены документа, я полагаю, вы можете использовать db.collection.findAndModify()
, он имеет обновление и удалить поле, которое может помочь вам достичь желаемого поведение.
Вы хотите обновить весь документ или просто некоторые атрибуты? –
Ну, представьте себе, у меня есть счет с ссылочными продуктами. Когда кто-то редактирует счет и сохраняет его, я не хочу проверять, какие продукты удаляются, ведьма из них обновлена / вставлена. Я просто хочу удалить все старые продукты и разместить там новые. –