Как сохранить UUID при экспорте и импорте документов?
- Экспортировать коллекцию как файл JSON
- Удалить коллекцию и создать заново
- Импортировать файл JSON
- UUID преобразовано в двоичный('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 0)
- Больше невозможно читать документы из кода из-за 4.
Мне нужно было удалить поле из всех документов в коллекции, поэтому я подумал об экспорте всех документов в этой коллекции и импортировании их снова. Во время импорта я могу отменить выбор поля, которое хотел удалить, и это именно то, что мне нужно.
Однако...
Документы в этом коллекция содержит UUID: один для идентификатора документа, один для идентификатора другого документа в другой коллекции.
После экспорта все UUID были преобразованы в
Код: Выделить всё
{
"$binary":
{
"base64": "QDhscRPCgUAcwqLDosOwPDDDu8KNBA==",
"subType": "00"
}
Код: Выделить всё
Binary('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 0)
Произошла ошибка при десериализации идентификатора Свойство класса
MongoDbGenericRepository.Models.Document: ожидаемая длина 16,
а не 29.
Что я пробовал
Что я пробовал h2>
При импорте документа в MongoDB Compass вы получаете раскрывающийся список, позволяющий изменить тип поля:
[img]https:/ /i.sstatic.net/of0q3.png[/img]
- Я пробовал изменить это на UUID.
- Я попытался изменить тип на UUID, как указано выше, а также вручную отредактировать «subType»: «00» в файле экспорта JSON как на 03, так и на 04.
Когда я это сделал, в документах фактически были поля UUID вместо Binary('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 0). Однако я по-прежнему получаю ту же ошибку относительно ожидаемой длины при попытке получить эти документы из кода. - Я пытался изменить «subType»: «00» на оба 03 и 04 и оставьте тип поля как двоичный. Когда я это сделал, в документе появилось сообщение Binary('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 3), но я все равно получал ту же ошибку из кода.

Есть предложения, как это исправить?
/>В качестве альтернативы, есть какие-нибудь предложения по резервному копированию и восстановлению в этой ситуации?
РЕДАКТИРОВАТЬ:
Мне удалось экспортировать и импортировать один документ. Шаги:
- Скопируйте все UUID документа в блокнот.
- Экспортируйте документ в. Файл JSON
- Для каждого UUID используйте этот сайт, чтобы преобразовать UUID в строку base64.
- Замените значение «base64» в файл JSON со строкой, полученной на шаге 3.
- Импортируйте документ JSON и установите поля, в которых будут храниться эти UUID, в UUID (по умолчанию это будет двоичный файл) )
Подробнее здесь: https://stackoverflow.com/questions/696 ... pplication