You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何使用mongodump仅导出MongoDB元数据而排除实际数据?

如何用mongodump仅导出MongoDB的架构元数据(不含文档数据)

方法1:用mongodump的--query参数(全版本兼容)

这是最直接的方式,通过指定一个永远匹配不到文档的查询条件,让mongodump只生成元数据文件,不导出任何实际数据:

  • 示例命令:
    mongodump --db your_target_db --query '{"_id": {"$exists": false}}' --out ./schema_backup
    
  • 细节说明:
    • MongoDB中所有文档默认都有_id字段,{"_id": {"$exists": false}}这个条件不会匹配任何数据,因此导出的.bson文件是空的。
    • 每个集合对应的.metadata.json文件会完整保留集合的索引、验证规则、存储选项等所有元数据。
    • 如果只需要导出特定集合,加上--collection your_collection参数即可。

方法2:用mongosh手动生成元数据恢复脚本(更灵活)

如果需要定制导出内容(比如只导出索引或验证规则),可以用mongosh直接提取元数据并生成可执行的恢复脚本:

  1. 连接目标数据库:
    mongosh mongodb://your_host:your_port/your_target_db
    
  2. 导出集合创建语句(包含验证规则):
    db.getCollectionNames().forEach(col => {
      const collOptions = db.getCollection(col).options();
      printjson({ create: col, ...collOptions });
    });
    
  3. 导出所有集合的索引:
    db.getCollectionNames().forEach(col => {
      db.getCollection(col).getIndexes().forEach(idx => {
        delete idx.v; // 移除MongoDB内部版本标识,避免恢复时出现警告
        printjson({ createIndexes: col, indexes: [idx] });
      });
    });
    
  4. 将上述输出保存为schema_restore.js,后续恢复时运行mongosh your_target_db < schema_restore.js即可重建架构。

恢复时的注意事项

用mongorestore恢复方法1导出的备份时,不需要额外参数,它会自动读取.metadata.json文件创建集合、索引并应用验证规则,空的.bson文件不会影响架构恢复。

内容的提问来源于stack exchange,提问作者Nabhoneil Chattopadhyay

火山引擎 最新活动