2015-11-12 50 views
1

我想從我的服務器導出所有數據到我的本地(也沒有備份,所以這將作爲備份,所以我使用下面的代碼獲得集合中的一個JSON格式,並保存到本地。使用node.js導出和導入來自mongodb的數據express

我使用的MongoDB和節點明確。

dbName.find().exec(function(err, output){ 

var jsonOutput=JSON.stringify(output) 

fs.writeFile('downloads/output.json', output, function (err) { 
     if (err) { 
      console.log(err) 
      res.send('error') 
     } 
     else{ 
      var filename = 'res.json' 
      var mimetype = 'application/json' 

      res.setHeader('Content-disposition', 'attachment; filename=' + filename) 
      res.setHeader('Content-type', mimetype) 
      res.end(jsonOutput) 
     } 
    }) 
}) 

這給我我想要的東西。現在我要處理的JSON在我的本地機器以便我的本地數據與服務器同步。

  1. 如何將所有數據批量存儲到後端?
  2. 我有模式之間很少提到,所以將新的「_id」創建 因此影響了我的引用
  3. 如果你覺得這是不是導出數據的正確方法,怎樣才能 它使用節點快遞完成?

回答

2

嘗試使用mongodumpmongoexporthttps://docs.mongodb.org/manual/core/backups/

mongoexport提供從採集(通過,如果你想查詢)

mongodump使一個完整的數據庫轉儲(備份),這樣你可以很容易地用相同的ID,參考文獻,索引它的任何地方恢復,出口數據efficent方式。你所有的東西

你可以使用node.js child_process.exec運行mongodump/mongoexport。您可以使用linux crontab進行調度備份。有很多方法可以用正確的工具來組織這個工作

+0

我只是嘗試使用child_process exec列出所有用於測試的集合名稱。但我一直在得到stderr:getCollectionsNames不被識別爲內部或外部命令。 – prdtuty

+0

你可以通過mongodb-driver https://github.com/mongodb/node-mongodb-native來運行mongodb命令 – vmkcom