Экспорт и импорт документов с UUID из приложения MongoDB Compass для Windows.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Экспорт и импорт документов с UUID из приложения MongoDB Compass для Windows.

Сообщение Anonymous »

Краткое содержание
Как сохранить UUID при экспорте и импорте документов?
  • Экспортировать коллекцию как файл JSON
  • Удалить коллекцию и создать заново
  • Импортировать файл JSON
  • UUID преобразовано в двоичный('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 0)
  • Больше невозможно читать документы из кода из-за 4.
Подробнее
Мне нужно было удалить поле из всех документов в коллекции, поэтому я подумал об экспорте всех документов в этой коллекции и импортировании их снова. Во время импорта я могу отменить выбор поля, которое хотел удалить, и это именно то, что мне нужно.
Однако...
Документы в этом коллекция содержит UUID: один для идентификатора документа, один для идентификатора другого документа в другой коллекции.
После экспорта все UUID были преобразованы в

Код: Выделить всё

{
"$binary":
{
"base64": "QDhscRPCgUAcwqLDosOwPDDDu8KNBA==",
"subType": "00"
}
Когда я импортирую файл json обратно в коллекцию, все UUID документов заменяются на

Код: Выделить всё

Binary('bsOPwpzDrcKCcE0Iwr1FwrHDn8KRfsKdw7U=', 0)
Когда я пытаюсь получить эти документы из кода (C#), я получаю

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

Подробнее здесь: https://stackoverflow.com/questions/696 ... pplication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»