我在工作中有一個應用程序,用於在我工作的公司內部用作項目/任務跟蹤器。玩MongoDB atm。我有以下假模式:Python + MongoDB文檔版本
task
_id
name
project
initial_notes
versions
number
versions
version_1
worker
status
date(if submitted)
review_notes(if rejected)
reply_on(if accepted/rejected)
(version_n)(if any)
我遇到的問題是版本化任務。我已經閱讀了一些可能的方法,但我沒有完全理解它們。我讀到的東西,我喜歡here,真正喜歡的方式mongoid確實是它versioning
思考更好,我寧願它是這樣的
task
_id
versions
number_of_versions: 3
current_version
version_no: 3
worker: bob
status: accepted
old_versions
version
version_no: 2
worker: bob
我想只顯示最新版本當顯示一組任務時,我想在進入該特定任務的詳細信息頁面時顯示特定任務的所有版本。這個結構會起作用嗎?如果是,那麼爲了實現我所需要的,需要運行一些查詢?
預先感謝您花時間閱讀本文,也許可以回答。 狀態:拒絕 版本 version_no:1名 工人:史密斯 狀態:拒絕
所以檢索整個數組並循環通過它決定哪個是最新的並顯示它?它會比其他模式有什麼優勢嗎?在第一個版本中,我可以針對大量任務db.task.findOne({},name:1,...,versions.current_version:1)嗎?考慮到數據庫不會那麼大,訪問時間不會有問題,但如果我需要將此模式應用於更大規模(不同的應用程序),我要求將來參考 – pocorschi
如果您希望每個版本的快速增長每一個任務,你都應該把版本保存在一個單獨的集合中。雖然這可能聽起來像「sql-way」一樣,但Mongo DB的文檔鼓勵它:http://www.mongodb.org/display/DOCS/Schema+Design#SchemaDesign-UseCase –
版本應該在5-6範圍內最大。仍然不確定我是否應該按照我的方式或你的建議。這裏有一個微妙的差異,但我看不出它是正面還是負面 – pocorschi