【问题标题】:Mongoid::Versioning - how to check previous versions?Mongoid::Versioning - 如何检查以前的版本?
【发布时间】:2012-01-28 02:23:01
【问题描述】:

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

【问题讨论】:

    标签: mongodb mongoid


    【解决方案1】:

    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()。

    希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多