Шимон,
Я бы посоветовал рассмотреть возможность использования идентификаторов UUID для имен документов и сохранять вложение как что-то «статичное», например «оригинал», «большой палец», «300 в ширину» и т. Д. Имя, данное пользователем при загрузке файла может быть сохранен как ключ, и вы можете использовать индекс MapReduce для получения изображения / файла, используя это имя позже.
Однако, если вы пойдете по этому пути, вам придется столкнуться с проблемой «дубликатов» немного по-другому - вы можете легко загрузить одно и то же изображение несколько раз с одним и тем же именем, предоставленным пользователем, и не будет конфликт.
Однако, в зависимости от того, что вы создаете, заставить пользователя предоставлять уникальное имя, как правило, неразумно, например, Flickr (среди многих других) этого не делает.
Если вам действительно нужно присвоить doc_id == имя, данное пользователем, тогда все равно будет целесообразно хранить вложения под статическими именами, поэтому вам не придется обновлять имя вложения.
Наконец, если вы чувствуете, что действительно должны изменить имя вложения (и, безусловно, в некоторых случаях это необходимо), самый простой способ - получить вложение из старого местоположения (или с документом), поместив его как новое имя и УДАЛИТЬ вложение со старым именем.
Надеюсь, это поможет!