說明:本文所有操作均在win7下的MongoDB3.4.4版本中進行。
一、備份與恢復
1. 備份:
mongodump -h IP --port 端口 -u 用戶名 -p 密碼 -d數據庫 -o 文件路徑
(將使用某個用戶賬號將某個mongodb服務器上的某個數據庫備份到某個路徑下)
如果無需指定用戶,可以去掉-u和-p;如果導出本機的數據庫,可以去掉-h;如果是默認端口,可以去掉--port;
如果想導出所有數據庫,可以去掉-d。如果只想備份某個集合,應在”-d 數據庫”后添加”-c 集合名”選項。
備份單個集合示例:
這個命令執行之后在D:\mongodb\backup目錄會生成一個'wjt'文件夾,里面兩個文件:friend.bson和friend.metadata.json,前者存儲集合數據,后者存儲集合的元數據,如索引信息等。
如果想根據查詢條件來備份數據,則應該添加’-q 查詢條件’選項。
查詢條件備份示例:
(mongodb3.4.4查詢條件使用單引號會報錯:query is not in proper format)
2. 恢復:
mongorestore -h IP --port 端口 -u 用戶名 -p 密碼 -d數據庫 --drop 文件路徑
--drop:恢復的時候,先刪除當前數據庫數據,然后恢復備份的數據
(恢復后,備份后添加、修改的數據都會被刪除,慎用!若不使用該選項,則恢復過程可能會出現很多鍵重復的報錯,鍵重復的數據將不被恢復)
如果只想備份某個集合,應在”-d 數據庫”后添加”-c 集合名”選項,備份某個集合的時候需要指定具體的bson文件,而不能只是指定文件目錄。
恢復單個集合示例:
導入成功之后,不僅數據可以導入,索引信息也會導入。
二、導出與導入
1. 導出:
mongoexport -h IP --port 端口 -u 用戶名 -p 密碼 -d數據庫 -c 表名 -f 字段名 -q 查詢條件 --type=csv -o 文件路徑
mongoexport導數據時一定要使用-c參數指定需要導出的集合,所以-o參數要指定一個具體的文件名而不能是目錄。
-f:只導出指定的字段,多個字段之間使用英文逗號分隔。
--type:指定導出文件的格式。目前只支持json和csv,指定導出csv格式時一定需要使用-f參數指定需要導出的字段,csv文件第一行為字段名標題。
2. 導入:
(1)導入json文件:
mongoimport -h IP --port 端口 -u用戶名 -p 密碼 -d 數據庫 -c 表名 --upsert --drop 文件名
--upsert:存在則更新,不存在則插入。若只是導入部分字段,則將其換成--upsertFields參數並指定字段名列表。
(2)導入csv文件:
mongoimport -h IP --port 端口 -u用戶名 -p 密碼 -d 數據庫 -c 表名 --type=csv --headerline --upsert --drop 文件名
--headerline:去除csv文件中的標題行,或使用-fields參數指定字段名,但這兩個參數不能同時使用。