【发布时间】:2012-01-28 02:23:01
【问题描述】:
我在基于 Mongoid 的类中包含了 Mongoid::Versioning 模块。检查文档以前的“版本”或化身的最佳方法是什么?我希望能够看到它的历史。这可以通过rails console 或MongoDB shell。查看文档历史记录最简单的方法是什么?
【问题讨论】:
我在基于 Mongoid 的类中包含了 Mongoid::Versioning 模块。检查文档以前的“版本”或化身的最佳方法是什么?我希望能够看到它的历史。这可以通过rails console 或MongoDB shell。查看文档历史记录最简单的方法是什么?
【问题讨论】:
Mongoid::Versioning 模块向文档添加一个名为 version 的 Integer 类型的字段,该字段记录当前文档的版本,从 1 开始,直到最大值(如果已定义)。此外,您将创建一个嵌入式文档“版本”。然后有一个 before_save 回调为您处理版本控制。
通常我会推荐一个最大值,但这取决于你。至于如何理解,你没有给出示例文档,所以我们以一篇非常简单的文章为例:
#Make an empty post, just a title, version 1
post = Post.create(:title => "Hello World")
# Now add some "content" and save, version 2
post.content = "Woo - content"
post.save
这会给我们一个类似这样的文档:
{
"title": "Hello World",
"content": "Woo - content",
"comments": [
]
"version": 2
"versions": [
{ "title": "Hello World", "version": 1 }
]
}
现在您只需使用标准查找机制即可:
post = Post.find(:first, :conditions => {:title => "Hello World"})
从中获取最新版本,然后您可以以编程方式搜索以前的版本。我会发布输出,但我目前没有设置示例。
同样,如果您希望通过 shell 执行此操作,您只需根据标题、版本字段运行 db.namespace.find()。
希望这是有道理的。
【讨论】: