我从运行在Google Cloud Platform(GCP)上的MongoDB服务器中转储了一些BSON和JSON文件,我想将数据还原到版本为4.0.3的新本地服务器中。但是,我收到错误消息,表明无法还原索引。我必须将JSON文件中的{"$numberInt": "1"}
转换为1
才能使恢复过程成功。为什么我需要花大力气修复转储文件的格式。是由于源服务器和目标服务器之间的版本不同还是由于某些我未正确执行的操作?
我已经搜索并搜索了堆栈溢出,但是没有人讨论这个问题。并且release note of MongoDB没有提及与此问题相关的任何更改。
这是版本4.0.3的mongorestore
无法接受的JSON示例
{
"options": {},
"indexes": [
{
"v": {
"$numberInt": "2"
},
"key": {
"_id": {
"$numberInt": "1"
}
},
"name": "_id_",
"ns": "demo.item"
},
{
"v": {
"$numberInt": "2"
},
"key": {
"itemId": {
"$numberDouble": "1.0"
}
},
"name": "itemId_1",
"ns": "demo.item"
}
],
"uuid": "8ce4755612da4d048b0fd38a793f2b55"
}
这是被接受的,由我自己转换。
{
"options": {},
"indexes": [
{
"v": 2,
"key": {
"_id": 1
},
"name": "_id_",
"ns": "demo.item"
},
{
"v": 2,
"key": {
"itemId": 1.0
},
"name": "itemId_1",
"ns": "demo.item"
}
],
"uuid": "8ce4755612da4d048b0fd38a793f2b55"
}
here是我用来进行转换的脚本。
问题:
为什么mongorestore
不接受mongodump
创建的转储文件?
是否有避免手动修改转储文件的方法?