Какие будут последствия, если назначенное пользователем поле _id не будет уникальным
в БД или коллекции? В какой сфере действительно нужна уникальность (и
какова область для вложенных объектов)?
Уникальность слишком важна в любом наборе данных, потому что вам нужен способ идентифицировать ваши данные по некоторой идентичности. Уникальные идентификаторы являются ключевыми для этого.
И это действительно важно, когда вы определяете уникальные индексы. Он будет прикручен при попытке добавить дубликат ключа в уникальный индекс.
Можно ли изменить (заменить) _id (и его тип) для всего
документы в коллекции?
Нет, это невозможно напрямую, вам нужно скопировать данные документа во временную коллекцию и повторно вставить их в исходную коллекцию с новыми идентификаторами.
в чем разница (при обработке с помощью механизма БД) между вложенными
объекты, когда я храню как объекты JSON (см. ниже - A) или как
встроенные документы с _id (B)?
Встроенные объекты - это те, которые изначально поддерживаются mongodb, ссылки на объекты будут обрабатываться вручную вашим кодом, в основном ODM (например, ruby Mongoid)
Поскольку вы задали вопрос о разнице, встроенные документы обрабатываются как другое поле в документе, поэтому вы можете запросить его, вы можете проиндексировать его и будут возвращены как часть документа.
Но ссылочные документы - это совершенно отдельный документ. Вы не можете напрямую запросить его из родительского документа и индексации. Вместо этого вы должны написать логику приложения для хранения идентификаторов и вручную запросить их из приложения.
Как я могу конвертировать "просто объекты json" (без _id) во встроенные
документы с _id?
Ваше предположение неверно. Вложенные документы имеют идентификаторы. Он будет создан автоматически при его создании.
EDIT:
Мои предположения были неверны в этом. Mongodb не генерирует автоматически идентификаторы для встроенных документов. Но некоторые ODM, такие как Mongoid, также генерируют идентификаторы для встроенных документов.