Mongoid ::版本控制 - 如何检查以前的版本?

ran*_*its 2 mongodb mongoid

我在基于Mongoid的类中包含了Mongoid :: Versioning模块.检查以前的"版本"或文档化身的最佳方法是什么?我希望能够看到它的历史.这可以是通过rails console或MongoDB shell.查看文档历史记录的最简单方法是什么?

Ada*_*ord 7

Mongoid :: Versioning模块将一个名为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
Run Code Online (Sandbox Code Playgroud)

那会给我们一个这样的文件:

{
  "title": "Hello World",
  "content": "Woo - content",
  "comments": [
  ]
  "version": 2
  "versions": [
    { "title": "Hello World", "version": 1 }
  ]
}
Run Code Online (Sandbox Code Playgroud)

现在你只需要使用标准的查找机制来实现它:

post = Post.find(:first, :conditions => {:title => "Hello World"})
Run Code Online (Sandbox Code Playgroud)

从中获取最新版本,然后您可以以编程方式搜索以前的版本.我会发布输出,但我目前没有设置样本.

类似地,如果您希望通过shell执行,则只需要根据标题,版本字段运行db.namespace.find().

希望这是有道理的.