我正在试图找出MongoDB / Mongoid / Rails购物车的更好的架构设计。
class User
...
embeds_many :orders
end
或
class User
...
has_many :orders
end
尝试从性能的角度来决定哪个更好。想使用embeds_many
,但是如果我想在一个页面上列出所有订单(例如在管理界面中),我不确定查询性能如何。
答案 0 :(得分:0)
这里最重要的是如果嵌入orders
,那么它就不能有任何其他关联(除了它自己的嵌入对象)。所以它不能,例如,has_many products
。它不能belong_to
一个shipment
。没有。如果模式可以处理这个,那么确定。
第二个问题是,您是否要列出orders
独立于users
的所有内容?如果是,那么你真的不应该嵌入它们。如果你这样做,那么你将进行一堆数据库调用,这会降低你的页面加载速度。 Heroku实际上关闭了我的网站(自动)几次,因为我做了类似这样的事情,我(在不知不觉中)尝试在一个页面加载中进行数百次调用。我稍微改变了我的代码,加载速度更快,没有抱怨。
所以,我会说不要嵌入它们。从逻辑上讲,orders
应与users
分开,因为它们不是users
的固有部分。