我正在尝试从dump恢复mngo数据库。这是sessions.metadata.json
代码段:
{
"options": {
"create": "sessions",
"flags": 1
},
"indexes": [
{
"v": 1,
"name": "_id_",
"key": {
"_id": 1
},
"ns": "myPrefix.sessions"
},
{
"v": 1,
"name": "expires_1",
"key": {
"expires": 1
},
"ns": "myPrefix.sessions",
"expireAfterSeconds": 0
}
]
}
源mongo db版本为2.4
目标mongo为3.6
。我得到错误:
Failed: myPrefix.sessions: error creating collection myPrefix.sessions: error running create command: Parsed command object contains duplicate top level key: create
当我发现其他metadata.json
文件无法正常恢复时,不包含options
部分。为什么需要它?我可以安全地从options
删除sessions.metadata.json
部分吗?
答案 0 :(得分:0)
可能为时已晚,但是我面临着完全相同的问题(mongo 2.4到mongo 3.6 dump),解决方案是在进行mongorestore之前手动创建数据库和集合。 这可能会跳过语句的create部分,从而避免了我认为是不同版本的mongodump / restore之间的导入错误。
答案 1 :(得分:0)
MongoDB 3.4服务器也遇到了相同的问题:
2019-12-18T09:19:14.881+0100 reading metadata for my_db.posts from dump/my_db/posts.metadata.json
2019-12-18T09:19:14.882+0100 creating collection my_db.posts using options from metadata
2019-12-18T09:19:14.883+0100 Failed: my_db.posts: error creating collection my_db.posts: error running create command: Parsed command object contains duplicate top level key: create
查看dump/my_db/posts.metadata.json
文件的内容,我发现:
{ "options" : { "create" : "posts" }, "indexes" : [ { "v" : 1, "name" : "_id_", "key" : { "_id" : 1 }, "ns" : "my_db.posts" } ] }
我还检查了另一个有效的集合,该集合未包含此options
属性。
将其删除并重新运行mongorestore
解决了该问题。我还有几个文件需要删除此options
属性,然后还原正常完成。