Шимона,
Я хотел бы предложить с учетом использования UUID, для названий документов и сохранение вложения как-то «статические», как «оригинальный», «большой палец» , «300 по всему миру» и т. Д. Имя, указанное пользователем при загрузке файла, может быть сохранено в виде ключа, и вы можете использовать индекс MapReduce для получения изображения/файла с использованием этого имени позже.
Если вы идете по этому маршруту, вам придется столкнуться с проблемой «дубликатов» несколько иначе - так как вы можете легко загрузить одно и то же изображение несколько раз с тем же именем, предоставленным пользователем, и будет нет конфликта.
В зависимости от того, что вы строите, пользователь делает уникальное имя, как правило, неразумным - Flickr (среди многих других), например, не работает.
Если вам действительно нужно сделать doc_id == имя, данное пользователем, тогда было бы разумно хранить вложения под статическими именами, поэтому вам не нужно обновлять имя вложения.
Наконец, если вы чувствуете, что действительно хотите изменить имя вложения (и, конечно же, есть случаи, когда вам нужно), самый простой способ - установить приложение из старого местоположения (или с документа), PUT it as новое имя и УДАЛИТЬ вложение со старым именем.
Надеюсь, что это поможет!
Не требуется ли для последовательности GET/PUT/DELETE тип mime вложения для ПУТЬ? Как я получу это? (Единственный способ, которым я знаю, - получить документ и посмотреть свойства заглушки приложения в поле _attachments, но это слишком много накладных расходов, если есть много вложений.) –
Если вы знаете имя вложения , вы можете использовать запрос HEAD для получения своего типа mime. Если вы этого не сделаете, вы можете использовать MapReduce для создания индекса всех _attachments и их mime-типов. Затем используйте результаты этого в качестве основы для запуска GET/PUT/DELETE. – BigBlueHat