Das Mongoid::Versioning-Modul fügt dem Dokument ein Feld namens Version vom Typ Integer hinzu, das die Version des aktuellen Dokuments aufzeichnet, beginnend bei 1, bis zum Maximum (falls definiert). Darüber hinaus haben Sie ein eingebettetes Dokument "Versionen", die erstellt werden. Es gibt dann einen before_save-Callback, der die Versionierung für Sie übernimmt.
Im Allgemeinen würde ich ein Maximum empfehlen, aber das liegt bei Ihnen. In Bezug darauf, wie man an sie herankommt, nun, Sie haben kein Beispieldokument gegeben, also lassen Sie uns mit einem sehr einfachen Artikel als Beispiel weitermachen:
#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
Dadurch erhalten wir ein Dokument in etwa wie folgt:
{
"title": "Hello World",
"content": "Woo - content",
"comments": [
]
"version": 2
"versions": [
{ "title": "Hello World", "version": 1 }
]
}
Jetzt müssen Sie nur noch Ihre Standard-Suchmechanismen verwenden, um dorthin zu gelangen:
post = Post.find(:first, :conditions => {:title => "Hello World"})
Holen Sie sich die neueste Version daraus, und dann können Sie programmgesteuert nach früheren Versionen suchen. Ich würde die Ausgabe posten, aber ich habe im Moment kein Beispiel eingerichtet.
Ebenso brauchen Sie nur db.namespace.find() basierend auf den Titel- und Versionsfeldern auszuführen, wenn Sie dies über die Shell tun möchten.
Hoffentlich macht das Sinn.