如何导出MongoDB的数据库创建脚本?
MongoDB类似SQL Server脚本化建库的实现方案
MongoDB属于NoSQL数据库,没有原生对应.sql格式的单文件导出选项,但可以通过两种方式实现和SQL Server script.sql完全等价的效果,其他用户拿到对应文件后一键即可复现完整数据库(含结构、索引、约束、可选业务数据)。
方案1:导出含数据的整库脚本(等价于SQL Server整库导出脚本)
这是最常用的方案,依赖MongoDB官方自带工具即可完成:
- 导出操作:在源库环境执行
mongodump命令,执行后会在指定目录生成整库的结构+数据文件,可直接打包发给其他用户
mongodump --db 你的源数据库名 --out 自定义导出目录路径
- 导入操作:其他用户拿到导出文件后,执行
mongorestore命令即可完整复现原库
mongorestore --db 目标数据库名 导出目录/对应库的文件夹路径
方案2:仅导出库结构脚本(不含数据,等价于SQL Server仅架构导出)
如果不需要导出业务数据,只需要同步库的集合、索引、校验规则等结构,可以通过Mongo Shell生成纯JS初始化脚本:
- 导出操作:在源库环境打开Mongo Shell,切换到对应数据库后执行以下逻辑,把输出的内容保存为
mongo_init.js文件即可
// 遍历所有集合导出创建语句和索引 db.getCollectionNames().forEach(coll => { const collOptions = db.getCollectionInfos({name: coll})[0].options; print(`db.createCollection("${coll}", ${JSON.stringify(collOptions)});`); // 导出当前集合所有索引 db[coll].getIndexes().forEach(idx => { delete idx.v; // 移除版本号避免跨版本兼容问题 print(`db.${coll}.createIndex(${JSON.stringify(idx.key)}, ${JSON.stringify(idx)});`); }); });
- 导入操作:其他用户拿到
mongo_init.js文件后,执行以下命令即可创建完全一致的库结构
mongosh 目标数据库名 < mongo_init.js
上述所有工具
mongodump、mongorestore、mongosh都是MongoDB安装包默认附带的官方工具,不需要额外安装第三方组件。
内容的提问来源于stack exchange,提问作者Nat
相关产品推荐
相关产品推荐

