MongoDB的數據庫如何更名?


  • Lv 1

    目前看過修改集合名、字段名,有人知道如何修改數據庫名稱嗎?

    除了以下方法之外,是否還有其他方式?

    db.copyDatabase('old_name', 'new_name')

  • Lv 1

    db.copyDatabase("db_to_rename","db_renamed","localhost")
    use db_to_rename
    db.dropDatabase();

  • Lv 1

    @leo這種用複製的方式,有比較好嗎?比如可以重整索引,或是重整碎片(defrag)?


  • Lv 1

    會不會增加效率我就不知道了, 有請高手解答此問題了, 我也想知道


  • 註冊用戶

    將資料庫直接轉移成新的應該會比較快

    mongodump -d old_name -o mongodump/
    mongorestore -d new_name mongodump/old_name


  • Lv 1

    @yea 這樣匯出再匯入,受 I/O 影響很大,確定會比較快嗎?

    就算用 pipe (|) 以 onfly 方式重製,在資料量巨大時,恐怕也需要好一陣子吧


  • 註冊用戶

    @Triton

    以這篇的需求,是想知道是否有其他更名方式?

    從這個角度來回答,dump 出來再 restore 成新的資料庫名稱會是比較 "快" 能想到的方式

    至於使用哪種方式效率比較好,這就交給高手來回答了,畢竟更名的動作也不常做


  • 註冊用戶

    整個資料庫倒出來再倒回去會很慢,但是更改 db 名稱會動到整個 collection 和 index 的 namespace 

    如果有開 Replication 和 Sharding 則全部的結點也都受到影響,所有參照這個 db 的 oplog 也一併受影響。

    不過如果一個一個改 collection 會比整個倒出再倒回去快,可以試看看下面的方式。

    use admin
    db.runCommand({renameCollection: "[db_old_name].[collection_name]", to: "[db_new_name].[collection_name]"})

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待