我应该有多深入Mongoid?

时间:2011-12-14 17:22:11

标签: mongodb mongoid

您好我是mongoDB和Mongoid的新手,对于何时使用嵌入式文档以及嵌入的深度有点困惑。

这是一个虚构的例子:

Library collection has_many :books, which embeds_many :pages, which embeds_many :sections

由于我无法直接说出一个部分,我必须通过books.pages.sections,对吗?

这将导致此路线libraries/:id/books/:id/pages/:id/sections/:id 这看起来有点疯狂,最佳做法是只嵌套一层深,对吧? 一种方法是使用路由pages/:id/sections/:id,然后将bookid粘贴在请求中?

查询说,部分会更难吗?例如,如果我需要查找部分标记为x的所有书籍?

但是,如果我没有一直嵌入,我会有额外的查询?

有人能说些什么吗?感谢。

1 个答案:

答案 0 :(得分:6)

首先,我相信没有人可以给你正确的答案,你应该有多深入地嵌入文件。它高度依赖于您的具体项目要求。通常,您应该回答一些问题以选择适当的架构设计:

  1. 用户是否会同时更新集合中的同一对象? (或者如果客户丢失了更新,我老板会说些什么)
  2. 我是否需要支持原子操作?
  3. 我是否需要独立显示嵌套集合,或者是否需要与父级查询?
  4. 我是否需要对嵌入对象进行排序?
  5. 我是否需要查询嵌入对象?
  6. 如果你回答1,2-true; 3我需要独立展示它们(不同的页面); 4,5 - 那么我确信嵌入会对你的屁股造成某种痛苦。

    我想,额外的查询应该不是问题。