2017-04-13 47 views
1

所以我使用Node.js,mongoDB,express在cloud9上創建了一個web應用程序。我按照說明在雲9中設置了MongoDB。如何將MongoDB數據庫從cloud9導出到mlab?

當我完成應用程序後,我將它部署到Heroku,並在mlab(mongolab)中創建了一個新的數據庫。這工作正常。

但是,我在cloud9託管的db中插入了大量虛擬數據。 我想將這個虛擬數據從cloud9中的db複製到mlab中的db中。我該怎麼做?


我做了一些研究。

據MongoDB的文檔,我應該使用db.copyDatabase():

db.copydatabase(fromdb,todb,fromhost,用戶名,密碼機制)

它說我應該在運行此命令目標實例,即接收復制數據的實例。

我假設這意味着我應該連接到通過託管在MLAB分貝: 蒙戈dsblahblah.mlab.com:59220/blahblah -u -p

,然後運行命令db.copyDatabase,正確?

但是,我應該使用什麼fromdb參數?這是在雲9中託管的數據庫。但是這個數據庫的網址是什麼?

幫助。和ELI5。

+0

除非有某種方式來滿足您的Mongo的數據庫,通過HTTPS,您將無法使您的MongoDB可以從遠程源複製。 Cloud9不支持這一點。你應該研究一種創建數據庫轉儲文件的方法,然後將其上傳到mlab中。 –

回答

1

Nathan Loyer有正確的答案,但它當然比這更復雜。如果你和我一樣,也不知道你在做什麼,這裏有一個詳細的解釋對我有幫助,有資源可以讓我得到這些信息在底部,以防萬一有什麼更新並使你過時。

請注意,您需要爲每個要遷移的集合執行此操作。有機會你只有一個或幾個集合,所以沒有多少麻煩。如果你想移動一個完整的分貝,這些說明可能會被修改,但這取決於你。

  1. 找出你想要移動的集合。爲此,在Cloud9中,在適當的目錄中,在命令行中,運行以下命令,並記住或記下您標識的數據庫和集合。 (如果你不知道的集合,你可以做分貝。(集合).find()輸出有數據的列表)
mongo 
show dbs 
use (the name of the appropriate db, not in parentheses though) 
show collections 
  • 導出數據庫中的數據。這相對容易。簡單地用CTRL + C退出蒙戈,並使用您的命令行下面的代碼,以填充數據和沒有括號:
  • mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes) 
    
  • 現在你需要將您的數據導入mLabs。去mLabs,選擇你的數據庫,並選擇「工具」菜單。您應該在「JSON」下看到用於導入的預製代碼。再次使用來自mLab的數據庫用戶憑據填充空白,但是不要運行它。它應該是這個樣子:
  • mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?> 
    
  • 爲了順利通過進口,你應該檢查你的CLOUD9和mLabs實例在同一運行(或至少非常相似的版本)。在cloud9中,只需在控制檯中鍵入「mongo」,看看它說什麼。你可能在2.6或3.2。在mLab上,它幾乎在每個頁面上。只需查找「mongod版本:xxxxx」。你可能在3.4.7上。我用mLab 3.4將它作爲Cloud9 3.2運行,並且運行良好。 (如果你的CLOUD9是小於3版本,備份重要的東西(使用git?)和更新按照指示在https://community.c9.io/t/updating-mongodb/3914
  • 你需要做的是停止CLOUD9所有進程,包括mongod的另一件事,它從根目錄運行。這是你需要運行mongoimport的地方(而不是從你的命令行在你的工作區的某個目錄中,這是我告訴你運行mongoexport的地方)。要清楚:你的命令行應該顯示「用戶名:〜$」,而不是「用戶名:〜/ workspace/filedirectories/maybeafewofthem(可能是master)$」。

    由於您是從根目錄運行的,因此您還需要確保您傳遞的文件名被正確引用。它不會像「traffic.json」那麼簡單。它應該看起來像「workspace/directoryName/traffic.json」。 (如果您的導出成功,您應該會看到traffic.json文件在您的文件的某個位置浮動。)

    就是這樣。運行第3步中的代碼,並檢查它正確處理的mLabs。很好去。

    資源:

    http://docs.mlab.com/connecting/

    http://docs.mlab.com/migrating/

    https://docs.mongodb.com/manual/reference/program/mongoexport/

    https://docs.mongodb.com/manual/reference/program/mongoimport/

    相關問題