我的 mongoid 模型包含一些条目,并希望将它们组织成类别。类别应该有一个像这样嵌套的选项:
Videos:
-Car video
-Gadgets Video
--iPad
--Android
Music:
-Pop
--Madonna
-Rap
--2pac
--50cent
如何使用 mongoid 进行此操作?类别的顺序无关紧要。
答案 0 :(得分:2)
您可以使用Mongoid Nested Set:
class Category
include Mongoid::Document
acts_as_nested_set
end
<强>已更新强>
Trees in MongoDB有不同的模式。 Acts_as_nested_set
是DRTW(不要重新发明轮子)解决方案,但其他人可能更适合你。
答案 1 :(得分:1)
我意识到了一个带有“mongoid_tree”的嵌套类别模型。这很直接。
root = Category.new { :name => "Root Category" }
child = Category.new { :name => "Child Category" }
childs_child = Category.new { :name => "Child Child Category" }
root.children << child
root.save
child.children << childs_child
child.save
# get all root categories
Category.where("parent_ids" => []).first
=> "#<Category _id: 4d63cbdf2507e40d03000018, child_ids: [BSON::ObjectId('4d63cbdf2507e40d03000019')], parent_ids: [], name: \"Root Category\">"
儒略
答案 2 :(得分:1)
对于mongoid嵌套集,正确的链接是:https://github.com/thinkwell/mongoid_nested_set。
非常好的lib。 acts_as_nested使用较少的查询。