【问题标题】:Export mongodb collection data and import it back using node js导出mongodb集合数据并使用node js导入回来
【发布时间】:2020-08-25 07:29:31
【问题描述】:

我是 mongodb 的新手,所以在使用 nodejs 导出和导入 mongodb 数据方面需要一些帮助。我有一个 mongodb 数据库和一些集合(例如产品集合、公式集合和规则集合,其中包含产品 id 的引用),我想根据 api 请求的参数从不同的集合中导出数据,并生成包含相应数据的文件,该文件将在客户端浏览器上下载。用户可以使用导出的文件将导出的数据导入另一个数据库实例。已经搜索过这个主题并来到this answer 不确定我是否可以使用 mongoexport 来完成我的任务。知道我该怎么做。非常感谢任何帮助或想法。提前致谢。

【问题讨论】:

    标签: node.js mongodb mongoose import export


    【解决方案1】:

    此代码将从 MongoDB 集合(导出功能)中读取文档,然后以 JSON 格式写入文件。此文件用于读取(导入功能)并将 JSON 插入另一个集合。代码使用MongoDB NodeJS驱动。

    出口:

    根据提供的查询从集合 inCollection 中读取,并以 JSON“out_file.json”的形式写入文件。

    const MongoClient = require('mongodb').MongoClient;
    const fs = require('fs');
    const dbName = 'testDB';
    const client = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology:true });
    
    client.connect(function(err) {
        //assert.equal(null, err);
        console.log('Connected successfully to server');
        const db = client.db(dbName);
    
        getDocuments(db, function(docs) {
        
            console.log('Closing connection.');
            client.close();
            
            // Write to file
            try {
                fs.writeFileSync('out_file.json', JSON.stringify(docs));
                console.log('Done writing to file.');
            }
            catch(err) {
                console.log('Error writing to file', err)
            }
        });
    }
    
    const getDocuments = function(db, callback) {
        const query = { };  // this is your query criteria
        db.collection("inCollection")
          .find(query)
          .toArray(function(err, result) { 
              if (err) throw err; 
              callback(result); 
        }); 
    };
    

    导入:

    读取导出的“out_file.json”文件并将 JSON 数据插入到outCollection

    client.connect(function(err) {
    
        const db = client.db(dbName);
        const data = fs.readFileSync('out_file.json');
        const docs = JSON.parse(data.toString());
        
        db.collection('outCollection')
            .insertMany(docs, function(err, result) {
                if (err) throw err;
                console.log('Inserted docs:', result.insertedCount);
                client.close();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 2016-04-07
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多