linux Mongorestore:createIndex错误:v:2索引键模式中的值不能是object类型,只允许数字>、数字〈和字符串

zvms9eto  于 2023-04-11  发布在  Linux
关注(0)|答案(3)|浏览(171)

在对大型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

失败:生产设备状态:为产品设备状态创建索引时出错:createIndex错误:v:2索引键模式中的值不能是object类型。只允许数字〉0、数字〈0和字符串。
任何帮助来解决这个问题?
谢谢你

xam8gpfp

xam8gpfp1#

对于将来来这里的人来说,问题是,我在本地使用MongoDB 4.0,服务器在4.2上:
从版本4.2开始,mongodump使用扩展JSON v2.0(规范)格式的元数据文件。要解析这些文件以进行恢复,请使用支持扩展JSON v2.0(规范或宽松模式)格式的mongorestore版本4.2+。有关详细信息,请参阅“元数据格式”一节:[docs.mongodb.com/manual/reference/program/mongodump][1]
来源:https://dba.stackexchange.com/questions/250312/failed-to-restored-indexes-using-mongorestore-mongodb

vecaoik1

vecaoik12#

从版本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
1.运行Mongod v4.0.10(如果失败,请执行下一个技巧)

  1. mongodump数据库v4.0.10
    另一招:
    mongodump对元数据文件使用扩展JSON v2.0(规范)格式
    1.启动mongod v4.0.10
    1.创建所有集合+索引
  2. Mongodump v4.0.10
    1.将metadata files .json dump v4.2.0替换为v4.0.10
  3. mongoestore转储与v4.0.10
5lwkijsr

5lwkijsr3#

或者,可以使用以下方法调整dumped json:

sed -i -E 's/\{"\$(\w+)":"([+-]?[0-9]+([.][0-9]+)?)"\}/\2/g' XXX.metadata.json

相关问题