我有一个应用程序在内部用作我正在为之工作的公司中的项目/任务跟踪器.玩MongoDB atm.我有以下伪模式:
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
工人:史密斯
状态:拒绝
解决方法:
是的,为什么不.该计划将起作用.另外,你考虑过这样的事情:
task
...
versions = [ # MongoDB array
{ version_id
worker
status
date(if submitted)
review_notes(if rejected)
reply_on(if accepted/rejected)
},
{ version_id : ... },
...
可能的版本插入查询:
tasks.update( { # a query to locate a particular task},
{ '$push' : { 'versions', { # new version } } } )
请注意,在这种情况下从版本数组中检索最后一个版本是由程序完成的,而不是由Mongo完成的.