Mongorestore: createIndex error: значения в шаблоне ключа индекса v: 2 не могут иметь тип объекта. Допускаются только числа> 0, числа <0 и строки - PullRequest
3 голосов
/ 07 января 2020

Я получаю следующую ошибку при запуске команды mongorestore с большой базой данных MongoDB.

машина, на которой было выполнено резервное копирование:

db version v4.2.0
git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1804
    distarch: x86_64
    target_arch: x86_64

версия для локальной машины (где я выполняю mongorestore)

db version v4.0.10
git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

Ошибка: prod.DeviceState: ошибка при создании индексов для prod.DeviceState: createIndex Ошибка: значения в шаблоне ключа индекса v: 2 не могут иметь тип объекта. Допускаются только цифры> 0, цифры <0 и строки. </p>

Любая помощь в решении этой проблемы?

Спасибо

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Для людей, которые придут сюда в будущем, проблема заключалась в том, что я использовал MongoDB 4.0 на локальном компьютере, а сервер был на 4.2:

Начиная с версии 4.2, mongodump использует Extended JSON v2. 0 (канонический) формат для файлов метаданных. Чтобы проанализировать эти файлы для восстановления, используйте mongorestore версии 4.2+, которая поддерживает расширенный формат JSON v2.0 (канонический или расслабленный режим). Подробности см. В разделе «Формат метаданных»: [docs.mongodb.com/manual/reference/program/mongodump][1]

источник: https://dba.stackexchange.com/questions/250312/failed-to-restored-indexes-using-mongorestore-mongodb

0 голосов
/ 07 января 2020

Начиная с версии 4.2, mongodump использует расширенный формат JSON v2.0 (Canonical) для файлов метаданных. Чтобы проанализировать эти файлы для восстановления, используйте mongorestore версии 4.2+, которая поддерживает расширенный формат JSON v2.0 (канонический или расслабленный режим).

Совет В общем случае используйте соответствующие версии mongodump и mongorestore. То есть для восстановления файлов данных, созданных с помощью указанной c версии mongodump, используйте соответствующую версию mongorestore.

https://docs.mongodb.com/manual/reference/program/mongodump/#metadata -формат

Итак, вам нужно выполнить mongorestore с v4.2.0

Или попробуйте это (сохранить резервную копию MongoDB)

  1. Остановите Mongod v4.2.0
  2. Запустите Mongod v4 .0.10 (если не удалось, go следующий трюк)
  3. база данных mongodump с v4.0.10

Другой трюк:

mongodump использует Extended JSON v2.0 (канонический) формат для файлов метаданных

  1. Запуск mongod v4.0.10
  2. Создание всех коллекций + индексов
  3. mongodump v4.0.10
  4. Заменить metadata files .json dump v4.2.0 на v4.0.10
  5. mongoestore dump с v4.0.10
...