Chrome Pointer

2023年12月13日 星期三

MongoDB的bin目錄下沒有mongoimport和mongoexport解決方法, 及使用方法教學

參考文章

💓初級>使用MongoDB結合Express和Fetch來實作RESTful API簡單網站(包括用戶Post, Get, Update, Delete等功能)

💓進階>使用MongoDB結合Express和Fetch來實作RESTful API會員系統 (進階)


本文是使用MongoDB 4.4.26版本,

以下的這些工具需要安裝 MongoDB 的 Database Tools,才能使用,也就是說要另外下載。




請按照以下步驟進行操作:

在 Windows 上:

1. 下載 Database Tools: 前往 MongoDB Download Center 下載 MongoDB 的 Database Tools。




2. 解壓縮檔案: 下載完成後,解壓縮檔案到你想要安裝的目錄。建議將它們放在易於訪問的位置,例如 C:\Program Files\MongoDB\Tools。


3. 設定環境變數(可選): 將安裝目錄(例如 C:\Program Files\MongoDB\Tools\bin)添加到系統的 PATH 環境變數中,這樣你就可以在命令提示字元或 PowerShell 中直接執行這些工具。

👉>打開系統屬性

按下 Windows + R 來打開“執行”對話框。

輸入 sysdm.cpl 並按下 Enter 鍵,這將打開系統屬性。


👉>設置環境變數的名稱和值

在彈出的窗口中,輸入環境變數的名稱(名稱通常是大寫,比如 PATH)。

在值(Value)欄位中,輸入環境變數的路徑。比如,如果你想要將 MongoDB 的 bin 目錄添加到 PATH 變數中,你需要輸入 MongoDB 的安裝路徑下的 bin 目錄。




4. 測試安裝: 在命令提示字元或 PowerShell 中執行相關的 Database Tools 指令,例如 mongodump、mongoexport,確保安裝成功。


👩mongoexport 匯出MongoDB的.json檔

切換到D:\exported_data資料夾下面,因為我想在這個路徑下產生匯出的json檔案~

PS C:\Users\xxx> cd D:\exported_data 

PS D:\exported_data> mongoexport --db my_database --collection my_custom_users --out exported_data.json

2023-12-13T16:50:21.518+0800    connected to: mongodb://localhost/

2023-12-13T16:50:21.583+0800    exported 2 records

運行以下指令後,就可以看到exported_data.json檔案出現了。

mongoexport --db my_database --collection my_custom_users --out exported_data.json


👨mongoimport 匯入MongoDB的.json檔

要將 JSON 檔案中的數據導入(匯入)到 MongoDB 中,可以使用 mongoimport 命令。

mongoimport --db my_database --collection my_custom_users --file exported_data.json\


這個命令將會從 exported_data.json 檔案中將數據導入到 MongoDB的my_database 資料庫的 my_custom_users 集合中。

D:\exported_data> mongoimport --db my_database --collection my_custom_users --file exported_data.json

2023-12-13T17:06:46.518+0800    connected to: mongodb://localhost/

2023-12-13T17:06:46.591+0800    2 document(s) imported successfully. 0 document(s) failed to import.


👦遇到錯誤,解決方法


2023-12-13T17:06:04.205+0800    continuing through error: E11000 duplicate key error collection: my_database.my_custom_users index: _id_ dup key: { _id: ObjectId('6579678969ba374cd3b6dfae') }

2023-12-13T17:06:04.205+0800    0 document(s) imported successfully. 2 document(s) failed to import.D:\exported_data> mongoimport --db my_database --collection my_custom_users --file exported_data.json

匯入時顯示的錯誤訊息,出現了「重複鍵(duplicate key)」的錯誤,

這是由於在導入過程中已經存在相同 _id 的文檔而導致的錯誤。


因為我把DB 匯出後,沒有把它刪掉,代表我的collection內還保留著原本的資料,

因此當我要把exported_data.json 匯入進去時,就出現錯誤,因為裡面有相同_id的值。


MongoDB 的每個文檔都有一個唯一的 _id 欄位,

如果 JSON 檔案中的文檔已經存在具有相同 _id 值的文檔,那麼在導入時就會出現重複鍵錯誤。


解決這個問題的方式通常是:

1. 修改 JSON 檔案: 如果你確定這些 _id 不需要是唯一的,你可以修改 JSON 檔案中的 _id 值為 MongoDB 中還不存在的唯一值,或者完全刪除 _id 欄位(在導入時 MongoDB 會自動產生新的 _id)。

2. 清空集合後再導入: 如果你想要完全用新的數據替換集合中的現有數據,可以先清空集合,然後再重新導入 JSON 檔案中的數據。你可以使用 db.my_custom_users.drop() 來刪除 my_custom_users 集合中的所有文檔,然後再重新執行 mongoimport。



沒有留言:

張貼留言

喜歡我的文章嗎? 喜歡的話可以留言回應我喔! ^^