Mongorestore:createIndex错误:v:2索引键模式中的值不能为object类型。仅允许数字> 0,数字<0和字符串

在大型MongoDB数据库上运行mongorestore命令时,出现以下错误。

完成备份的机器:

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索引键模式中的值不能为object类型。仅允许数字> 0,数字

有任何解决此问题的帮助吗?

谢谢

superursine 回答:Mongorestore:createIndex错误:v:2索引键模式中的值不能为object类型。仅允许数字> 0,数字<0和字符串

从版本4.2开始,mongodump对元数据文件使用扩展JSON v2.0(规范)格式。要解析这些文件以进行还原,请使用支持扩展JSON v2.0(规范或轻松模式)格式的mongorestore版本4.2 +。

提示
如果通用,请使用mongodump和mongorestore的相应版本。 也就是说,还原使用特定版本的文件创建的数据文件。 mongodump,请使用相应的mongorestore版本。

https://docs.mongodb.com/manual/reference/program/mongodump/#metadata-format

因此,您需要使用v4.2.0

执行mongorestore

或者,尝试此操作(保留MongoDB备份)

  1. 停止Mongod v4.2.0
  2. 运行Mongod v4.0.10(如果失败,请执行下一个技巧)
  3. 具有v4.0.10的mongodump数据库

其他技巧:

mongodump对元数据文件使用扩展JSON v2.0(规范)格式

  1. 启动mongod v4.0.10
  2. 创建所有集合+索引
  3. mongodump v4.0.10
  4. metadata files .json转储v4.2.0替换为v4.0.10
  5. 带有v4.0.10的mongoestore转储
本文链接:https://www.f2er.com/2809379.html

大家都在问