隨着應用程序的發展更新/遷移Mongoose模式的最佳實踐(或工具)是什麼?處理Mongoose中的模式更改
回答
更新:測試,這並不以目前的形式工作,它得到了正確的想法去的,我有一個單一的遷移具有相當的調整的工作模塊本身。但是我沒有看到它沒有發生重大變化就能按預期工作,並以某種方式跟蹤不同模式。
聽起來像是你想貓鼬數據的遷移
其目的是作爲使用它們來遷移文件的舊模式版本,這似乎是處理MongoDB中遷移的最佳途徑。
您不希望在文檔集合(ala alter table)上運行完整的數據集遷移,因爲它會給您的服務器帶來沉重的負擔,並且可能需要應用程序/服務器停機時間。有時候您可能需要編寫一個腳本,它只需抓取所有文檔即可應用新的模式/變更並調用保存,但您需要了解何時/在哪裏執行此操作。一個例子可能是,將遷移邏輯添加到doc init比運行遷移腳本花費3小時的服務器更有價值。
我發現這個link也很有幫助,基本上重申了上面的更多細節,基本上在php中實現了上述節點包的概念。
N.B.模塊是5個月大,0叉,但我環顧四周,找不到比abdelsaid的迴應風格更好/更有幫助..
很有趣,MongoDB的誕生是爲了迴應RDBMS中的模式問題。您無需遷移任何內容,只需要該字段即可在模式定義中設置缺省值。
new Schema({
name: { type: string }
})
到:
new Schema({
name: { type: string },
birthplace: { type: string, required: true, default: 'neverborn' }
});
我剛剛有這個問題,我需要更新我的數據庫,以反映更改我的模式。經過一番研究,我決定嘗試mongo控制檯中的updateMany()函數來進行更新,我認爲它工作得很好。
要應用此vimdude的示例中的代碼將如下所示:
try { db.<collection>.updateMany({ birthplace: null }, { $set: {"birthplace": "neverborn" } }); } catch(e) { print(e); }
的updateMany()函數將更新基礎上的過濾器的集合中的所有文件。在這種情況下,過濾器正在查找字段「出生地」爲空的所有文檔。然後在那些名爲「出生地」的文件中設置一個新的字段,並將其值設爲「永生」。
運行的代碼,修改,以反映你的情況後運行:
db.<collection>.find().pretty()
驗證進行了更改。具有「永生」價值的新領域「出生地」應顯示在收藏中每個文檔的末尾。
希望有所幫助。
- 1. Mongoose更改模式格式
- 2. 更改mongoDB/mongoose中的模式
- 3. 無需更改代碼即可處理XML模式更改
- 4. 處理併發修改w/mongoose
- 5. 如何處理生產中的mongodb「模式」更改
- 6. 在jaxb中處理頻繁的模式更改
- 7. 在Mongoose中處理錯誤
- 8. 你如何通過mongoose方法更改fieldName並在模式中更改它?
- 9. 處理ObservableCollection中的更改
- 10. 處理JavaScript中的更改
- 11. Mongo/mongoose模式被緩存在某處
- 12. Doctrine如何處理對數據庫模式的更改?
- 13. 處理模式更改的SSIS傳輸任務
- 14. SQL Server CDC - 處理模式更改的問題
- 15. 處理核心數據模型更改
- 16. 如何更改TFS處理模板
- 17. Mongoose,在mongoose.model('core_user')後強制更改模式。schema = new mongoose.schema(...)
- 18. AngularJS Mongoose錯誤處理
- 19. 用Mongoose處理錯誤
- 20. 其他處理更改日期格式
- 21. 繼承Mongoose模式
- 22. SVN如何處理文件訪問模式更改?
- 23. 在運行Spark Streaming應用程序時處理模式更改
- 24. 在使用多個功能分支時處理模式更改
- 25. Node.js - Mongoose/MongoDB - 模型模式
- 26. 如何處理Mongoose DB連接中斷
- 27. `mongoose`如何處理FIELDS是__NOT__模式的一部分的文檔?
- 28. EF 4代碼如何首先處理生產環境中的模式更改?
- 29. 如何正確處理windows phone 7中應用程序欄的更改模式
- 30. 最好的方式來處理改變python類的'模式'
接受,至少有更好的東西出現。你能否將這個警告添加到你的答案中,因爲不是每個人都會看到評論。 – mahemoff
補充說明,明天需要這樣做,對不起另一個問題被阻止。 – Louis
已更新。可悲的是它相當破碎。讓我知道在這裏如果你找到任何東西,那麼你需要一種適合於更新的解決方案。我有一種感覺,你需要跟蹤每個版本,以加載舊的模式,並允許像模塊試圖做的修改。唉,我的貓鼬知識目前還相當缺乏。到達那裏! – Louis