irpas技术客

mongodb重命名表名,数据库名,移动表到另一个数据库_cang12345_mongodb 重命名数据库

大大的周 505

最近收到一个AliCloudDB for MongoDB的使用咨询问题,和大家分享一下,用户想对database进行重命名操作,但因为MongoDB并没有提供renameDatabase的命令,用户的想法是通过copydb来实现,先将数据库拷贝一份,然后删除老的数据库,但由于DB里数据很多,copydb太耗时,想知道是否有更好的方法?

虽然MongoDB没有renameDatabase的命令,但提供了renameCollection的命令,这个命令并不是仅仅能修改collection的名字,同时也可以修改database。 db.adminCommand({renameCollection: “db1.test1”, to: “db2.test2”})

上述命令实现了将db1下的test1,重命名为db2下的test2,这个命令只修改元数据,开销很小,有了这个功能,要实现db1重命名为db2,只需要遍历db1下所有的集合,重命名到db2下,就实现了renameDatabase的功能,写个js脚本能很快的实现这个功能. var source = “source”; var dest = “dest”; var colls = db.getSiblingDB(source).getCollectionNames(); for (var i = 0; i < colls.length; i++) { var from = source + “.” + colls[i]; var to = dest + “.” + colls[i]; db.adminCommand({renameCollection: from, to: to}); }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #mongodb #重命名数据库 #for