MongoTree
This is a simple way to add parent / child relationships to a Rails model that uses MongoDB and the MongoRecord plugin (not the Mongo ActiveRecord plugin.)
Installation
Gem:
sudo gem install mongo_tree
Plugin:
script/plugin install git://github.com/mully/mongo_tree.git
Usage
To use mongo tree, simply add the word “mongo_tree” to your model.
class Taxon < MongoRecord::Base
mongo_Tree
end
Add Child:
@root = Taxon.new({:name=>"ROOT", :content=>"ROOT content"})
@root.save
@child1 = Taxon.new({:name=>"Child", :content=>"Child content"})
@root << @child1
@grandchild = Taxon.new({:name=>"GrandChild", :content=>"Grand content"})
@child1 << @grandchild
Access Children:
@root.children #access all first level childrent
@root.descendants #access all descendants (children, grandchildren, etc)
@root.parent #parent object
@root.ancestors #all ancestors (parent, grandparents, etc)
Delete Children:
@root.remove!(@child1) #remove child from root. the child will be resaved in it's own root node.
References
http://mongodb.org
http://github.com/mongodb/mongo-activerecord-ruby/tree/master
http://www.koders.com/ruby/fid995C0ABC8DD9B624D7C4E4D9EE319F374E4CA7FA.aspx?s=cdef%3Atree#L11
http://wiki.apache.org/couchdb/How_to_store_hierarchical_data
Copyright © 2009 Squeejee, released under the MIT license