全部產品
Search
文件中心

ApsaraDB for MongoDB:MongoDB資料庫大版本升級說明

更新時間:Jun 04, 2026

ApsaraDB for MongoDB支援升級資料庫大版本。升級前,建議您瞭解不同產品架構、不同版本的執行個體支援升級到的資料庫大版本以及不同資料庫大版本的相容性變更說明。

支援升級的資料庫大版本

  • ApsaraDB for MongoDB控制台可以直接升級資料庫大版本,但不同產品架構、不同版本的執行個體支援升級的版本不同,具體情況如下:

    產品架構

    規格類型

    執行個體的資料庫大版本

    可升級到的資料庫大版本

    單節點架構

    通用型雲端硬碟版

    MongoDB 4.0

    暫無更高的資料庫大版本可升級。

    通用型雲端硬碟版

    MongoDB 3.4

    不支援升級資料庫大版本。

    如果您需要升級資料庫大版本,可以通過建立新執行個體,使用新執行個體替換舊執行個體。

    複本集架構

    • 通用型雲端硬碟版

    • 獨享型雲端硬碟版

    MongoDB 8.0

    MongoDB 8.3(需提交工單申請)

    MongoDB 7.0

    MongoDB 8.0

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.0

    MongoDB 4.4

    MongoDB 5.0

    執行個體從4.4升級到5.0後,由於預設的writeConcern{w:1}調整為{w:majority},可能會導致寫入效能退化,寫入延遲上升。請確認此變更帶來的影響後,再進行大版本升級。

    • 通用型本地碟版

    • 獨享型本地碟版

    • 獨佔物理機

    MongoDB 4.2

    不支援升級資料庫大版本。

    如果您需要升級資料庫大版本,可以通過建立新執行個體,使用新執行個體替換舊執行個體。

    MongoDB 4.0

    MongoDB 4.2

    MongoDB 3.4

    • MongoDB 4.0

    • MongoDB 4.2

    MongoDB 3.2

    MongoDB 3.0

    分區叢集架構

    獨享型雲端硬碟版

    MongoDB 8.0

    暫無更高的資料庫大版本可升級。

    MongoDB 7.0

    MongoDB 8.0

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.0

    MongoDB 4.4

    MongoDB 5.0

    執行個體從4.4升級到5.0後,由於預設的writeConcern{w:1}調整為{w:majority},可能會導致寫入效能退化,寫入延遲上升。請確認此變更帶來的影響後,再進行大版本升級。

    • 通用型本地碟版

    • 獨享型本地碟版

    • 獨佔物理機

    MongoDB 4.2

    不支援升級資料庫大版本。

    如果您需要升級資料庫大版本,可以通過建立新執行個體,使用新執行個體替換舊執行個體。

    MongoDB 4.0

    MongoDB 4.2

    MongoDB 3.4

    • MongoDB 4.0

    • MongoDB 4.2

    MongoDB 3.2

    MongoDB 3.0

  • 如果您需要跨產品架構或跨儲存類型升級執行個體大版本,可以先建立目標高版本執行個體,然後通過DTS將源執行個體遷移至高版本的新執行個體中。

    遷移資料的方法如下:

大版本相容性變更說明

不同資料庫大版本的相容性變更說明如下:

重要
  • 升級資料庫大版本時,執行個體的狀態需為運行中。如何升級資料庫大版本,請參見升級資料庫版本

  • 升級資料庫大版本後不支援降級。

  • MongoDB 4.0及以上大版本已相容MongoDB 3.6。如果您需要使用MongoDB 3.6大版本的功能,請升級到MongoDB 4.0及以上大版本。

  • 相容性變更說明僅包含ApsaraDB for MongoDB核心的變更,不包含MongoDB執行個體管控功能的變更。

資料庫大版本

相容性變更說明

MongoDB 8.3

  • 如果建立了使用 MongoDB 8.3 新引入運算式、參數或變數的視圖或集合 validator,降級後,這些視圖可能無法正常工作,對象可能無法通過驗證或求值。

  • MongoDB 8.3 可以使用新的驗證語義將集合標記為“已驗證(validated)”,該語義與 8.3 之前的版本不相容。如果在存在已驗證集合時嘗試降級,降級會失敗。

  • 從 MongoDB 8.3 開始,當 $facet 階段構造的文檔超過 100MB 限制時,MongoDB 返回 ExceededMemoryLimit 錯誤的錯誤碼從4031700變為146。如果你的應用、驅動或工具顯式檢查 4031700,需要更新代碼以識別新的 ExceededMemoryLimit 錯誤碼。

  • 從 MongoDB 8.3 降級到更早版本時,activeBalancerWindowDOW(按星期幾配置均衡視窗)配置不可用。

  • removeShard命令已棄用。推薦改用startShardDrainingstopShardDrainingshardDrainingStatuscommitShardRemoval四個新命令來控制分區刪除流程,支援隨時暫停和恢複遷移。

  • 在分區叢集上,DDL 操作和 applyOps 現在必須通過 mongos 執行,不能直接在分區節點上運行。

  • 2dsphereVersion預設值從3升級至4。如需將FCV降級至8.3以下版本,必須先刪除所有version 4的2dsphere索引。

  • 從8.3(以及8.0.18, 7.0.29)開始,複合萬用字元索引的wildcardProjection規範採用了更嚴格的驗證規則。現有索引即使不符合新的驗證要求也能繼續運行,但無法再建立不符合這些要求的新索引。

  • 關於時間序列集合,refineCollectionShardKey要求分區鍵引用邏輯中繼資料和時間欄位,不再接受底層儲存桶格式;索引不能命名為_id_timeField名稱不能以$開頭。

  • serverStatus輸出已移除service欄位。

  • 移除config.csrs.indexes 系統集合。

MongoDB 8.3的更多資訊,請參見Compatibility Changes in MongoDB 8.3

MongoDB 8.0

  • 不建議使用tcmallocAggressiveMemoryDecommit

  • tcmallocReleaseRate參數可以指定具體的記憶體釋放速率,ApsaraDB for MongoDB預設為10MB/s。

  • null作為查詢條件時,MongoDB不會再匹配undefined值。

  • 不建議使用index filter。

  • 時間序列集合不建議使用timeField作為分區鍵。

  • 不建議使用cleanupOrphaned命令。

  • 不允許並發執行同一集合的compact命令。

  • 在升級MongoDB 8.0版本前,您需要重新命名或刪除名為system.buckets的非時間序列集合。

MongoDB 8.0的更多資訊,請參見Compatibility Changes in MongoDB 8.0

MongoDB 7.0

  • 將大版本升級至MongoDB 7.0情境,目前不存在相容性問題。

  • 如果需要將MongoDB 7.0版本降級至其他大版本,則需要先移除7.0版本支援的功能,例如:

    • 刪除所有柱狀索引(columnar indexes)。

    • 登出通過setClusterParameter命令設定的叢集參數。具體資訊,請參見setClusterParameter

    • 刪除所有使用encryptedFields選項建立的集合。

    • 刪除所有的複合萬用字元索引(Compound wildcard indexes)。

MongoDB 7.0的更多資訊,請參見Compatibility Changes in MongoDB 7.0

MongoDB 6.0

  • 如果彙總管道裡使用的記憶體超過了100 MB,預設會寫入資料到磁碟的臨時檔案中。若要更改此預設行為,請修改全域參數allowDiskUseByDefaultfalse

    6.0之前的版本需要顯式指定{ allowDiskUse: true }參數,才能寫入資料到磁碟的臨時檔案中。

  • 通過dropIndexes刪除索引時,如果使用萬用字元*,不會刪除_id索引,也不會刪除分區鍵索引,更多資訊,請參見dropIndexes

  • 不再支援Mongo Shell工具,請使用mongosh工具替代。

  • 不再支援$explain$hint$max$maxTimeMS等操作符。

  • 當TTL索引expireAfterSeconds被設定為NaN時,會被認為設定為0,可能會立馬淘汰到期文檔。

  • 不再支援SCRAM-SHA-1認證方法。

  • 不再支援reIndex命令以及相對應的reIndex()方法。

MongoDB 6.0的更多資訊,請參見Compatibility Changes in MongoDB 6.0

MongoDB 5.0

  • Secondary節點(從節點)的Read Concern層級從available變更為local,更多資訊,請參見Read Concern

  • Write Concern的預設值由1變更為majority

    重要

    此調整可能會導致執行個體的寫入效能退化,請確認影響之後再進行大版本升級操作。此外,您也可以使用setDefaultRWConcern命令修改資料庫的預設writeConcern。

  • 不再支援db.collection.ensureIndex(),請使用db.collection.createIndex()替代。

  • saslStart以及saslContinue命令的參數進行嚴格校正,無法相容mgosaslContinue只需要conversationIdpayload參數,而mgo提供了一個多餘的參數 mechanism,更多資訊,請參見mgo

  • 刪除geoSearch

MongoDB 5.0的更多資訊,請參見Compatibility Changes in MongoDB 5.0

MongoDB 4.4

  • compact不再支援force選項,更多資訊,請參見compact

  • 不再支援geoSearch,更多資訊,請參見geoSearch

  • 支援在主備資料庫上同時建立索引,以減少索引建立帶來的主備延遲。即使在索引建立過程中,也可以保證備庫訪問到最新的資料。

MongoDB 4.4的更多資訊,請參見Compatibility Changes in MongoDB 4.4

MongoDB 4.2

  • 不再支援geoNear,請使用$geoNear (aggregation)替代,更多資訊,請參見$geoNear (aggregation)

  • 不再支援repairDatabase

  • 不再支援並刪除cloneCollection,請使用mongoexportmongoimport替代,更多資訊,請參見mongoexportmongoimport

  • 不再支援afterClusterTime,更多資訊,請參見afterClusterTime

  • 開源MongoDB 4.2+相容驅動預設啟用Retryable Writes,更多資訊,請參見Retryable Writes

  • 刪除groupcopydbclone

MongoDB 4.2的更多資訊,請參見MongoDB 4.2相容性更新說明

MongoDB 4.0

  • reIndex添加一個全域寫鎖,直到索引重建完成,更多資訊,請參見reIndex

  • 不再支援copydbclone

MongoDB 4.0的更多資訊,請參見MongoDB 4.0相容性更新說明

MongoDB 3.6

  • aggregate不再支援返回單個文檔,而是返回cursor。使用者可以通過cursor指定batch的規格。aggregate的更多資訊,請參見aggregate

  • $type: "array"能直接檢測到數群組類型的文檔,之前只能檢測到嵌套型的數群組類型文檔。$type的更多資訊,請參見$type

  • 數組排序結果,發生以下變更:

    • find中新增可選項sort,用於提供排序結果明細。find的更多資訊,請參見find

    • $sort(aggregation)$sort stage的記憶體限制為100 MB,更多資訊,請參見$sort (aggregation)

  • 在進行更新操作時,如果需要同時更新多個欄位,新欄位將按照字典順序添加,更多資訊,請參見$set

  • 不再支援snapshot查詢選項。

MongoDB 3.6的更多資訊,請參見MongoDB 3.6相容性更新說明

MongoDB 3.4

  • 不再支援group,請使用db.collection.aggregate()或者db.collection.mapReduce()替代。更多資訊,請參見db.collection.aggregate()db.collection.mapReduce()

  • 使用$in運算式匹配+ upsert: trueupdate

    樣本:

    db.c.drop()
    db.c.update({a:{$in:[1]}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4插入會失敗,MongoDB 3.4之前的大版本可成功插入一條記錄。
    db.c.update({a:{$elemMatch:{$in:[2]}}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4可成功插入一條記錄。

    update的更多資訊,請參見update

MongoDB 3.4的更多資訊,請參見MongoDB 3.4相容性變更說明

相關API

介面

說明

UpgradeDBInstanceEngineVersion

升級ApsaraDB for MongoDB執行個體的資料庫大版本。